递推
如果我改一下老师的递归的代码,将其用于递推,在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 }
运行后的结果为: