2013-10-24 129 views
0

我做了一個遞歸方法來計算階乘因子,但在主要方法中我使用了一個for循環來計算階乘列表。有沒有一種方法可以在主方法中不使用循環來計算階乘列表?如何在不使用循環的情況下打印階乘?

代碼:

public class FactInt { 
    public static void main(String[] args) { 
     for (int n = 1; n < 11; n++) 
      System.out.println(factorial(n)); 
    } 
    //Calculates the factorial of integer n 
    public static int factorial(int n) { 
     if (n == 0) 
      return 1; 
     else 
      return n*factorial(n-1); 
    } 
} 

回答

6

這取決於你所說的「計算表」的意思是什麼,但這打印同樣的事情:

public static void main(String[] args) { 
    factorial(10); 
} 
//Calculates the factorial of integer n 
public static int factorial(int n) { 
    if (n == 0) 
     return 1; 
    else { 
     int newVal = n*factorial(n-1); 
     System.out.println(newVal); 
     return newVal; 
    } 
} 
+0

@Plasmarob它會打印析因子。 – Vallentin

+0

@Plasmarob你錯了。但它會*遺漏基本案例的印刷。 –

+0

你是對的。 – Plasmarob

0

我不知道爲什麼你不」 t想要使用循環,但這裏有幾個想法:

你自己展開循環。

System.out.println(factorial(1)); 
System.out.println(factorial(2)); 
// ... 
System.out.println(factorial(11)); 

再拍遞歸方法和main調用它。

public static void factorials(int n) 
{ 
    if (n >= 11) return; 
    System.out.println(factorial(n)); 
    factorials(n + 1); 
} 
0

其實我想說,你不能還是更像以及爲什麼你會,但好,如果你真的想,你可以不喜歡這樣。

public class FactInt { 
    public static void main(String[] args) { 
     factorial(10); 
    } 
    //Calculates the factorial of integer n 
    public static int factorial(int n) { 
     final int calc; 

     if (n == 0) { calc = 1; } 
     else { calc = n * factorial(n - 1); } 

     System.out.println(calc); 

     return calc; 
    } 
} 
0

創建一個方法say getFactorial(int num),如下所示。在你的方法中移動你的for循環並從main調用這個方法。

public static void main(String[] args) { 
    int num = 11; 
    getFactorial(num); 
} 

public static void getFactorial(int num){ 
    for (int n = 1; n < num; n++) 
     System.out.println(factorial(n)); 
} 
//Calculates the factorial of integer n 
public static int factorial(int n) { 
    if (n == 0) 
     return 1; 
    else 
     return n*factorial(n-1); 
} 
0

再次使用遞歸就像這樣!

public class FactInt { 
    public static void main(String[] args) { 

     factorialList(1, 10); 
    } 
    //Calculates the factorial of integer n 
    public static int factorial(int n) { 
     if (n == 0) 
      return 1; 
     else 
      return n*factorial(n-1); 
    } 

    public static void factorialList(int min, int max) { 
     if (min != max) 
      factorialList(min, max-1); 
     System.out.println(factorial(max)); 
    } 
} 
相關問題