黑马程序员技术交流社区
标题:
递归的程序怎么写的比如求1-100的阶乘用递归思想做
[打印本页]
作者:
zhang894095
时间:
2016-7-6 08:30
标题:
递归的程序怎么写的比如求1-100的阶乘用递归思想做
请附思路和代码
作者:
aslwq2012
时间:
2016-7-6 17:13
阶乘100!=1*2*3*4……*100.
即需要连续做乘法100次
class Test{
public static void main(String【】args){
int n =1;
for(int i =1;i《=100;i++){
n = n*i;
}
System.out.println(n);
}
}
作者:
cat73
时间:
2016-7-6 17:34
感觉这种题目不是太适合用递归,不过既然你非得要,我也写了个出来。。
这个的输出结果是:2432902008176640000
public static void main(final String args[]) throws Exception {
new Main()._main(args);
}
private void _main(final String args[]) throws Exception {
BigInteger num = factorial(20);
System.out.println(num);
}
/**
* 求 n 的阶乘
* @param n 要被求阶乘的 n
* @return n 的阶乘
*/
public BigInteger factorial(int n) {
// factorial(n, n - 1)
return this.factorial(BigInteger.valueOf(n), n - 1);
}
/**
* 递归求 n 的阶乘
* @param num 当前结果
* @param n n的剩余值(每次减1)
* @return 当前结果
*/
private BigInteger factorial(BigInteger num, int n) {
if(n == 0) {
return num;
} else {
num = num.multiply(BigInteger.valueOf(n));
return factorial(num, n - 1);
}
}
复制代码
作者:
zhang894095
时间:
2016-7-6 22:05
谢谢,收到了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2