我刚开始学习编程,这是关于斐波那契序列的一个问题:
要求使用参数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个成员......)
以下是我的代码:
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 :(得分:2)
for(int i=n-1; i>i-k-1;--i)
i
几乎总是大于i-k-1
也许你的意思是for(int i=n-1; i>n-k-1;--i)
,但你应该检查一下。