如何实现java方法递归计算ln(n!)
?
这是我的解决方案。我知道这是错误的,但这是迄今为止我想到的唯一解决方案。
double func(int n) {
double result;
if(n == 1)
return 1;
result = func(n-1) * n;
return Math.log(result);
}
这是函数返回的内容:
func(2) = 0.6931471805599453 (correct)
func(3) = 0.7320993680864453 (should be: 1.79175946922805500081)
func(4) = 1.0744553356380115 (should be: 3.17805383034794561964)
最佳答案
需要注意的是 ln(n*x) = ln(n) + ln(x)
和 ln(1) = 0
:
double func(int n) {
if(n==1)
return 0;
return func(n-1) + Math.log(n);
}
关于用于递归计算ln(n!)的java方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39132426/