【发布时间】:2013-12-24 15:02:36
【问题描述】:
我刚开始学习编程,这里有一个关于斐波那契数列的问题:
要求用参数 k(表示斐波那契的 k 阶)和参数 n(表示序列的第 n 个成员)创建一个函数,并使用该函数获取 k 阶序列的第 m 个成员。
f0 = 0, f1 =0, ....fk-2 =0, fk-1=1;
when n=k, k+1,...
fn= fn-1+fn-2+....+fn-k; n=k,k+1,....
(f右侧的字母和数字是下标,表示第n个成员,第n-1个成员..)
以下是我的代码:
int Fibonacci(int k, int n){
int result=0;
if (n==k-1) return 1;
if (n<k-1) return 0;
if (n>=k){
for(int i=n-1; i>i-k-1;--i){
result+=Fibonacci(k,i);
cout<<result<<endl;
}
return result;
}
}
新版本
int result=0;
int Fibonacci(int k, int n){
if (n==k-1) return 1;
if (n<k-1) return 0;
if (n>=k){
for(int i=n-1; i>n-k-1;--i){
result+=Fibonacci(k,i);
cout<<result<<endl;
}
return result;
}
}
我的问题是为什么这段代码不能给出正确的答案?循环中应该有一些问题,但我找不到它们。有人会帮助我吗?
【问题讨论】:
-
尝试将结果初始化为 0
-
其实我试过了,还是不行。当我以函数 Fibonacci(3,5) 为例时,结果似乎是一个非常大的负数,例如 -8499XXXX....
-
如果您尝试过但仍然无效,请编辑您的代码以包含它。
-
使用调试器。测试一个简单的案例,例如:k=2.
-
是的,循环条件错误,请参阅下面的答案:)