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

Jon*_*ein 1 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
Run Code Online (Sandbox Code Playgroud)

它为什么这样做?

    // 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
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 9

看看你的循环:

for(int i = 0; i <= number; ++i)
    cout << fib(number) << endl;
Run Code Online (Sandbox Code Playgroud)

注意循环的主体如何不使用i......它总是调用fib(number).改变fib(i)它将修复它.

(这不是非常有效,因为你每次都会重新计算价值,但这是一个单独的问题.虽然你可以把印刷放进去fib,这混合了"如何处理结果"和"计算斐波纳契"的问题序列".)