我正在尝试编写一个递归的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;
}
答案 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
时递归将终止,因为我们知道斐波那契数的前两项是0
和1
。