在 C 中使用递归函数的欧拉数

  • 本文关键字:递归函数 c eulers-number
  • 更新时间 :
  • 英文 :


我正在尝试在C中制作一个程序,该程序使用递归函数来计算欧拉的数字的阶乘,并将该数据发送到主递归函数要停止两个连续值的位置具有0.0000001的区别,但是我似乎无法让我的程序继续返回-Inf。有人知道我在做什么错吗?编辑:使用当前代码,我可以将程序打印为0.5,但它不会递增n超过2。

#include <stdio.h>
double factorial(double n);
int main ()
{
  double n;
  double sum = 0;
  double last;
  double result = 0;
  for (n = 1; result <=0.0000001; n++)
  {  
    last  = sum;
    sum = factorial(n);
    result  = (1 / last) - (1 / sum);
    printf("result is %lfn", result);
  }
  printf("result is %lfn", result); // troubleshooting
  return 0;
}
double factorial(double n)
{
  if (n > 0)
    return ( n * factorial(n-1));
  else
    return 1;
} 

main中的第一次迭代:

sum == 0
last = sum; => last == 0
result  = (1 / sum) - (1 / last); => 1 / last == 1 / 0 == inf

然后,您从(1 / sum)中减去(1 / last),即inf,并获得负面的无穷大。

另外,由于您在第一次迭代中的return result,循环永远不会迭代一次。

相关内容

  • 没有找到相关文章

最新更新