import java.math.BigDecimal;
/**
* 递归算法实例
*/
public class RecursionAlgorithm {
public static void main(String[] args) {
System.out.println(factorial(BigDecimal.valueOf(100)));
System.out.println(sumFactorial(BigDecimal.valueOf(100)));
}
/**
* 阶乘 递归算法实现n!
* @param n 传入n
* @return
*/
static BigDecimal factorial(BigDecimal n){
if(n.compareTo(BigDecimal.valueOf(1))==0){
return BigDecimal.valueOf(1);
}
return n.multiply(factorial(n.subtract(BigDecimal.valueOf(1))));
}
/**
* 算法实现1到100的阶乘求和
*/
static BigDecimal sumFactorial(BigDecimal n){
if(n.compareTo(BigDecimal.valueOf(1))==0){
return n;
}
BigDecimal factorialResult = factorial(n);
return factorialResult.add(sumFactorial(n.subtract(BigDecimal.valueOf(1))));
}
/*
//错误思路
static BigDecimal sumFactorialWrong(BigDecimal n){
if(n.compareTo(BigDecimal.valueOf(1))==0){
return factorial(BigDecimal.valueOf(1));
}
BigDecimal factorialResult = factorial(n);
return factorialResult.add(sumFactorialWrong(factorial(n.subtract(BigDecimal.valueOf(1)))));
}
*/
}
03-24
1038
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交