首页 > 解决方案 > C递归问题-为什么我的小数点不对?

问题描述

这是我需要解决的教科书问题:

编写一个递归函数,对给定数 n 求解以下问题: 在此处输入图像描述

我得到的 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;
}

标签: crecursiondecimal

解决方案


推荐阅读