题意
题意很简单:给定一个数(N>=0)求出N的阶乘N的阶乘为N!=n(n-1)(n-2)…1;*
第一种方法:递归求解
思路:很容易想出来想要求出N!的阶乘必须求出N-1的阶层以此类推。
public static long getNMulti(int n){
if (n==1) return 1;
return n*getNMulti(n-1);
}
第二种方法:遍历求解
根据公式可以想出使用遍历的方法
public static long getMulti(int n){
long res=1;
for (int i=1;i<=n;i++){
res*=i;
}
return res;
}
第二种方法:DP求解
把每一步的结果存储下来。
public static long dp(int n){
long[] dp=new long[n+1];
dp[0]=1;
for (int i = 1; i <=n ; i++) {
dp[i]=i*dp[i-1];
}
return dp[n];
}
如有偏颇,欢迎指正!