C - 错误的斐波纳契数

时间:2014-04-17 22:35:21

标签: c math fibonacci

我已经编写了这个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);
            }
    }
}

2 个答案:

答案 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)

如果您不必使用递归,则不要使用它。如果这是一些递归练习,那就没关系。迭代编程更快,节省内存(很多)。