2016-01-29 140 views
1

我正在测试java中的很多选项,所以我想在java中做一个简单的递归函数。简单的递归阶乘函数

我使用控制台执行程序,它接收参数,但总是当我尝试与应大于1的任何参数的递归,它显示为0。

public class rec{ 
    public static void main (String[] args) { 
     int h = 0; 
     int numero = Integer.parseInt(args[0]); 
     int factor = 0; 

     if (numero == 0 || numero == 1){ 
      System.out.println(1); 
     } else { 
      int xpi = factorial(numero-1); 
      System.out.println(factor); 
     } 
    } 

    public static int factorial (int n){ 
     System.out.println("lol"); 
     if(n==0) { 
      return 0; 
     } else{ 
      return n* (n-1); 
     } 
    } 
} 
+2

我认为这将是更容易将代码粘贴到你的问题,这样你将有一个[MCVE] http://stackoverflow.com/help/mcve )。 – rgettman

+0

@rgettman即时通讯不能做,因为stackoverflow说代码很奇怪或类似的东西,我会再试一次。 –

+0

如果您希望获得帮助,请在您的问题中粘贴([编辑])代码的相关部分。 –

回答

1

您的方法不是递归的,因为它不会自我调用。这将是递归的例子:(

public static int factorial(int n) { 
    return n == 0 ? 1 : n * factorial(n-1); 
} 
+0

所以递归意味着必须自行调用!好的,我的感谢,对我和其他人都很有用 –

3

看看这些线你的代码:

int xpi = factorial(numero-1); 
System.out.println(factor); 

你把函数的结果xpi变量,但你打印factor变量。打印xpi应该工作。

System.out.println(xpi); 
+0

好,但其他一切都是错误的。 –