2013-08-23 40 views
-1

這是否算作遞歸函數...如果不是,那麼原因是什麼。這改變將它歸類爲這樣...感謝什麼歸類爲Java中的遞歸函數

public class Recursion { 

public static void recursionFunc(int beginning_value){ 
    if (beginning_value != 0){ 
     System.out.println(beginning_value); 
     recursionFunc(beginning_value - 1); 

    } 
} 
public static void main(String[] args){ 
    recursionFunc(10); 
} 
} 
+3

如果它自稱,它是遞歸的。儘量不要永久性復發。 –

+1

爲什麼不呢?這不是遞歸的標準例子嗎? –

+3

此外,遞歸的定義適用於所有語言 - 不僅僅是Java。 – sdasdadas

回答

4

調用自身的函數,直接或間接地,被稱爲遞歸。你的函數自己調用,所以它肯定是遞歸的。

這裏是遞歸函數的示例調用本身間接:

static void funcA(int x) { 
    if (x <= 0) return; 
    if (x % 2 == 0) { 
     funcB(x-1); 
    } else { 
     funcC(x-1); 
    } 
} 
static void funcB(int x) { 
    funcA(x-1); 
} 
static void funcC(int x) { 
    funcA(x-2); 
} 
1

您的方法是遞歸方法。當它再次調用自己時,該方法被認爲是遞歸的。所有遞歸方法都應該內置某種退出,否則該方法將產生Stackoverflow錯誤。

這裏是沒有把它建成一個退出遞歸方法:

static void callAgain() { 
callAgain(); 
} 

這裏的遞歸方法的詳細信息: http://danzig.jct.ac.il/java_class/recursion.html