C++斐波那契程序
C++ Fibonacci Program
谁能告诉我为什么我会提前得到一个序列号?我似乎找不到问题所在!
例如,如果您输入 10,您应该得到 34,但得到 55(前面一个数字,即 11)
#include <iostream>
using namespace std;
int fibonacci (int n);
int main ()
{
int n;
cout << "Fibonacci number generator" << endl;
cout << "Which one do you want (0 to exist)?";
cin >> n;
cout << fibonacci(n);
}
int fibonacci (int n)
{
if (n == 0)
{
return 0;
}
else if (n == 1)
{
return 1;
}
else
{
return (fibonacci(n - 2) + (fibonacci(n - 1)));
}
}
这取决于您如何定义第一个数字。
在你的代码中,它看起来是从 1 开始的,所以第 10 个元素输出 55 没有错。
1, 1, 2, 3, 5, 8, 13, 21, 34, 55
但是,我认为你不小心把它弄对了,我猜你想做的是:
#include <iostream>
using namespace std;
int fibonacci (int n);
int main () {
int n;
cout<<"Fibonacci number generator"<<endl;
cout<<"Which one do you want (0 to exist)?";
cin>>n;
if(n == 0) {
return 0;
}
cout<<fibonacci(n);
return 0;
}
int fibonacci (int n) {
if (n == 1){
return 0;
} else if (n == 2) {
return 1;
} else {
return (fibonacci(n-2)+(fibonacci(n-1)));
}
}
即
- 输入为0时退出
- 顺序是这样的:
0, 1, 1, 2, 3, 5, 7, 13, 21, 34
斐波那契数列曾经是:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55
但在现代它已经演变为:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55
见https://en.wikipedia.org/wiki/Fibonacci_number。
如果使用第一个序列,则种子定义为:
F(1) = 1
F(2) = 1
如果使用第二个序列,种子定义为:
F(0) = 0
F(1) = 1
只要我们都同意F(10)
是55
,它是(第一个)序列中的第10个数字还是(第一个)序列中的第11个数字都没有关系第二)序列。
谁能告诉我为什么我会提前得到一个序列号?我似乎找不到问题所在! 例如,如果您输入 10,您应该得到 34,但得到 55(前面一个数字,即 11)
#include <iostream>
using namespace std;
int fibonacci (int n);
int main ()
{
int n;
cout << "Fibonacci number generator" << endl;
cout << "Which one do you want (0 to exist)?";
cin >> n;
cout << fibonacci(n);
}
int fibonacci (int n)
{
if (n == 0)
{
return 0;
}
else if (n == 1)
{
return 1;
}
else
{
return (fibonacci(n - 2) + (fibonacci(n - 1)));
}
}
这取决于您如何定义第一个数字。
在你的代码中,它看起来是从 1 开始的,所以第 10 个元素输出 55 没有错。
1, 1, 2, 3, 5, 8, 13, 21, 34, 55
但是,我认为你不小心把它弄对了,我猜你想做的是:
#include <iostream>
using namespace std;
int fibonacci (int n);
int main () {
int n;
cout<<"Fibonacci number generator"<<endl;
cout<<"Which one do you want (0 to exist)?";
cin>>n;
if(n == 0) {
return 0;
}
cout<<fibonacci(n);
return 0;
}
int fibonacci (int n) {
if (n == 1){
return 0;
} else if (n == 2) {
return 1;
} else {
return (fibonacci(n-2)+(fibonacci(n-1)));
}
}
即
- 输入为0时退出
- 顺序是这样的:
0, 1, 1, 2, 3, 5, 7, 13, 21, 34
斐波那契数列曾经是:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55
但在现代它已经演变为:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55
见https://en.wikipedia.org/wiki/Fibonacci_number。
如果使用第一个序列,则种子定义为:
F(1) = 1
F(2) = 1
如果使用第二个序列,种子定义为:
F(0) = 0
F(1) = 1
只要我们都同意F(10)
是55
,它是(第一个)序列中的第10个数字还是(第一个)序列中的第11个数字都没有关系第二)序列。