2013-08-23 42 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