局部变量在递归函数中返回

时间:2015-03-14 04:23:38

标签: c recursion fibonacci

我已经为斐波纳契系列编写了一个返回完整系列之和的代码,可以将本地“static int”变量返回到代码试图打印总和的主函数。

以下是我的代码

#include<stdio.h>


int fiborecur(int n)
{
    static int first=0,second=1,sum=0,total=0;
    if( n>0 )
    {
        sum = first + second;
        total = total + sum;
        printf("  %d", sum);
        first = second;
        second = sum;
        fiborecur(n-1);
    }
    else
    {
        return total+1;
    }
}
int main()
{
    int n;
    printf("Enter the series length you want = ");
    scanf("%d", &n);
    printf("0  1");
    printf("\nSum of the series after return = %d\n", fiborecur(n-2));
    return 0;
}

2 个答案:

答案 0 :(得分:2)

为什么你的int值声明为static?使用您的返回值返回当前总数,然后它将自动发生。

静态值加递归是灾难的一种方法。

答案 1 :(得分:-1)

您的问题是,您只返回n == 0的总数,但您的主要功能实际上是n > 0。让你的函数总是返回total + 1,不仅当n为零时(换句话说只是删除else),它应该有效。