返回顶部

一缕半夏微光

温柔半两,从容一生

导航

递推

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

 

运行后的结果为:

 

posted on 2020-10-04 15:59  一缕半夏微光  阅读(167)  评论(0编辑  收藏  举报