无法正确打印递归fibonacci序列

时间:2016-06-29 03:58:36

标签: c recursion fibonacci

我正在尝试编写一个递归的Fibonacci生成器,用C打印每个术语。术语的数量是用户指定的;我开发了算法。当我尝试打印时,它只打印一个。任何人都可以指出我出错的方向吗?

#include <stdio.h>
#include <stdlib.h>

int Fibonacci (int n)
{
    if (n = 0)
        return 0;
    if (n = 1)
        return 1;
    else
        return (Fibonacci(n-1) + Fibonacci(n-2));
}

int main()
{
    int terms;
    printf("Enter the number of terms: ");
    scanf("%d", &terms);


    printf("\nThe Fibonacci sequence containing %d terms is:\n", terms);

    int i = 0;
    for (i; i < terms; i++)
    {
        printf("%d ", Fibonacci(i));
    }

    return 0;
}

3 个答案:

答案 0 :(得分:2)

if (n == 0)

if (n=0)

仔细检查你的语法。

答案 1 :(得分:1)

您使用单个等号,因此您可以分配值而不是进行比较

if (n == 0)
    return 0;
if (n == 1)
    return 1;
...

答案 2 :(得分:0)

你可以试试这个逻辑:

int Fibonacci (int n)
{
    if(n < 2)
       return n;
    else
       return Fibonacci(n- 1) + Fibonacci(n- 2);
}

此处n<2表示当术语数为< 2时递归将终止,因为我们知道斐波那契数的前两项是01