我不确定我逻辑中的错误是什么。样本输出:
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
答案 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'