遞推
阿新 • • 發佈:2020-10-04
如果我改一下老師的遞迴的程式碼,將其用於遞推,在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); 7int 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 publicstatic 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 }
執行後的結果為: