用于递归计算ln(n!)的java方法

标签 java algorithm math recursion

如何实现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/

相关文章:

java - Spring - 找不到 org/springframework/context/event/EventListenerFactory 的类文件

java - 为什么前缀增量的使用被认为比构造标准中的后缀增量更好

python - 如何在 Django 查询集中重新创建 reddit 排序?

algorithm - 嵌套循环 i=0..n-2, j=i+1..n-1 的 Big-Oh 是什么?

java - 无法理解科赫曲线分形曲线

algorithm - 如何从鼠标坐标接收细胞的等距索引?

java - Android Kotlin `.replaceRange` 不会替换 SpannableString 中的文本

java - Bouncy CaSTLe 未签名条目使用 Maven 运行 Jar-with-dependencies 时出错

C++有序(稳定)优先级队列

algorithm - 特殊 Blob 填充算法的名称