1. 程式人生 > 實用技巧 >遞推

遞推

如果我改一下老師的遞迴的程式碼,將其用於遞推,在50!的時候不會出現0的情況,但是在我自己寫的程式的情況下,在30!的時候可能就不行了。

以下為改編後的遞推程式碼

 1 import java.math.BigInteger;
 2 import java.util.Scanner;
 3 public class DiTui {
 4     public static void main(String[] args) {
 5         System.out.println("請輸入N:");
 6         Scanner in=new Scanner(System.in);
 7
int number=in.nextInt(); 8 for(int i=1;i<number+1;i++) { 9 System.out.println(i+"!="+DiTui2(i)); 10 } 11 } 12 13 public static long DiTui(int n) { 14 if(n==1||n==0) { 15 return 1; 16 } 17 return n*DiTui(n-1); 18
} 19 public static BigInteger DiTui2(int n) { 20 if(n==1||n==0) { 21 return BigInteger.valueOf(1); 22 } 23 return BigInteger.valueOf(n).multiply(DiTui2(n-1)); 24 } 25 }

執行後的結果為:

下面這個是自己寫的程式

 1 import java.util.Scanner;
 2 public class DiTui {
 3     public
static void main(String[] args) { 4 System.out.println("請輸入N:"); 5 Scanner in=new Scanner(System.in); 6 int number=in.nextInt(); 7 for(int i=1;i<number+1;i++) { 8 System.out.println(i+"!="+Di(i)); 9 } 10 } 11 public static int Di(int n) { 12 int sum=1; 13 for(int i=1;i<n+1;i++) { 14 sum=sum*i; 15 } 16 return sum; 17 } 18 }

執行後的結果為: