c - C递归问题-为什么我的小数点不对?
问题描述
这是我需要解决的教科书问题:
我得到的 n = 6 的结果是 120.18405 6
我想要 n = 6 的结果是 120.18405 2
我得到的 n = 7 的结果是 720.147 296
我想要 n = 7 的结果是 720.147 339
我的问题是,为什么我的小数点不对?随着我增加 n,错误似乎在增加。
我的代码:
#include <stdio.h>
#include <stdlib.h>
double factorial(int num)
{
if(num==1)
{
return 1;
}
else
{
return num * factorial(num-1);
}
}
double recurisve(int n, int c)
{
double addend, enumerator;
if(c%2==1)
{
addend = c/2+1;
enumerator = factorial(n - c/2);
}
else if(c%2==0)
{
addend = n - (c-1)/2;
enumerator = factorial((c-1)/2+1);
}
if(c==n)
{
return addend + enumerator;
}
else
{
return addend + enumerator / recurisve(n, c+1);
}
}
int main()
{
int n;
scanf("%d",&n);
printf("%lf",recurisve(n,1));
return 0;
}