我不确定逻辑中的错误是什么。示例输出:
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;