我的递归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

看看你的循环:

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

注意循环的主体如何不使用i。。。它总是调用CCD_ 2。将其更改为fib(i)将修复它。

(这不是很有效,因为你每次都会重新计算值,但这是另一回事。虽然你可以将打印放在fib中,但这混合了"如何处理结果"one_answers"计算斐波那契序列"的问题。)

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

制作:

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