递归函数返回的局部变量

Local variable returned in recursive function

我已经为返回完整系列之和的斐波那契数列编写了代码,是否可以将局部 "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;
}

为什么您的 int 值声明为静态的?使用您的 return 值到 return 当前总数,然后它会自动发生。

静态值加上递归是灾难的根源。

你的问题是如果 n == 0 你只 return 总数,但你的主函数实际上用 n > 0 调用它。使您的函数始终 return total + 1,而不仅仅是当 n 为零时(换句话说,只需删除 else),它应该可以工作。