我已经编写了这个C代码来输出Fibonacci数字,但是我输错了为什么它给出了错误的值,以及为什么数字偶尔会 down 。出了什么问题,我该如何解决?
它给了我这个序列:0,0,1,1,2,1,3,4,3,5,5,6,8,7,13,8,21,9,34。
#include <stdio.h>
#include <math.h>
int MyFibonacciFunction(int n)
{
if (n == 0) {
return 0;
} else {
if (n == 1) {
return 1;
} else {
return (MyFibonacciFunction((n - 1)) + MyFibonacciFunction((n - 2)));
}
}
}
void main()
{
int a = 0;
while (a < 10) {
{
printf("%d\n", a);
printf("%d\n", MyFibonacciFunction(a));
a = (a + 1);
}
}
}
答案 0 :(得分:1)
我已按如下方式更改了您的代码,尝试此操作可以解决您的问题:
#include <stdio.h>
int MyFibonacciFunction(int n) {
if(n == 0)
return 0;
else if(n == 1)
return 1;
else
return (MyFibonacciFunction((n - 1)) + MyFibonacciFunction((n - 2)));
}
int main(void)
{
int a = 0;
while (a < 10)
printf("%d\n", MyFibonacciFunction(a++));
return 0;
}
答案 1 :(得分:0)
如果您不必使用递归,则不要使用它。如果这是一些递归练习,那就没关系。迭代编程更快,节省内存(很多)。