日期:2014-05-20 浏览次数:20864 次
public long getNNNN(int n) { long result = 1; for (int i=n; i>0; i--) { result = result * i; } return result; }
------解决方案--------------------
public class Test { public double getN(double n) { if (n == 1) return 1; else return (n * getN(n - 1)); } public static void main(String[] args) { double a = 10; System.out.println(getN(a)); } }
------解决方案--------------------
以下是递归实现:
分析如下;
n!=n*(n-1)!
(n-1)!=(n-1)*(n-2)!
....
0!=1
可以得出:
public static int func(int i) { if (i == 0 || i == 1) { return 1; } return i * func(--i); }
------解决方案--------------------
public long factorial(int num) {
long result = 1L;
while(num > 1) {
result *= num--;
}
return result;
}
------解决方案--------------------
能不递归,就不递归,看来都知道要--啊... ...
------解决方案--------------------
递归很方便:
public class Test{
public int getN(int n){
if(n==0 || n==1) return 1;
return n*getN(n-1);
}
public static void main(String[] args){
int result = new Test().getN(5);//例如N=5
System.out.println(result);
}
}
------解决方案--------------------
n不能大于17,超过17int就溢出,需要先判断
if(n<0 && n>17)
{}
else
{}
超过17,用BigDecimal
------解决方案--------------------
public long getEstate(int num){ if (num <= 1) return 1; else return num * getEstate(num - 1); }