【发布时间】:2014-08-30 23:32:56
【问题描述】:
我正在尝试学习已经开始使用 python 编程的 c++。这是一个计算两个值 a,b 之间的斐波那契数的简单程序。但是,当我运行代码时,只打印了数字 1,我不知道为什么。我认为这与在 for 循环中使用 return 有关。任何帮助将不胜感激
#include <iostream>
using namespace std;
int fibo(int b,int a=0){
int x=0;
int y=1;
for(int i=0; i<=b; i++){
int x0=x;
int z=x+y;
x=y;
y=z;
if(x>a){
return x0;
}
}
}
int main()
{
cout << fibo(100)<<endl;
return 0;
}
这里是python函数,仅供参考
def fibo(b,a=0):
x=0
y=1
while x<=b:
z=x+y
x0=x
x=y
y=z
if x>a:
print x0
我也在c++中尝试过以下方法
#include <iostream>
using namespace std;
int fibo(int b,int a=0){
int x=0;
int y=1;
for(int i=0; i<=b; i++){
int x0=x;
int z=x+y;
x=y;
y=z;
if(x>a){
cout << x0 <<endl;
}
}
}
int main()
{
fibo(100);
return 0;
}
然而,这给出了超出 b 值的斐波那契数
【问题讨论】:
-
Python 函数打印许多值。 C++ 函数只返回一个。
-
为什么用return代替了print? Python 代码正在打印每个值。 C++ 代码将返回第一个值,第一个值始终为 1。
-
在你的python代码中,你使用
x作为循环不变量,但在你的C++代码中,你使用i。所以这与 Python 的代码不同(显然)。 -
ohkk,我又检查了你的python代码。你的b在这里是什么?是要打印斐波那契的元素数量还是只是必须打印斐波那契的一个值?
-
@Arpit 斐波那契数被计算到 b (所以后者)