我的递归斐波那契程序有什么问题?

时间:2012-02-09 17:12:30

标签: c++ recursion fibonacci

我不确定我逻辑中的错误是什么。样本输出:

How many terms of the Fibonacci Sequence do you wish to compute?
1
1
1
--How many terms of the Fibonacci Sequence do you wish to compute?
5
5
5
5
5
5
5

为什么要这样做?

    // Recursive Fibonacci Sequence
#include <iostream>
using namespace std;

double fib(double number);

int main(void) {
        double number;
        cout << "How many terms of the Fibonacci Sequence do you wish to compute?" << endl;
        cin >> number;

        for(int i = 0; i <= number; ++i)
                cout << fib(number) << endl;
} // end main

// function fib definition
double fib(double number) {
        if((number == 0) || (number == 1))
                return number;
        else
                return fib(number - 1) + fib(number - 2);
} // end function fib

3 个答案:

答案 0 :(得分:9)

看看你的循环:

for(int i = 0; i <= number; ++i)
    cout << fib(number) << endl;

注意循环体不使用i ...它总是调用fib(number)。将其更改为fib(i)将解决此问题。

(它不是非常有效,因为你每次都会重新计算值,但这是一个单独的问题。当你可以将打印放在fib中时,会混合关于“如何处理结果”和“计算Fibonacci序列”的问题。)

答案 1 :(得分:1)

成功:

for(int i = 0; i <= number; ++i)
    cout << fib(i) << endl;

答案 2 :(得分:1)

你应该只将'i'作为for循环中的参数而不是'number'