【问题标题】:fibonacci sequence in c++ [closed]c ++中的斐波那契数列[关闭]
【发布时间】: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.
  • 是的,循环条件错误,请参阅下面的答案:)

标签: c++ fibonacci


【解决方案1】:
for(int i=n-1; i>i-k-1;--i)

i 几乎总是大于i-k-1

也许你的意思是for(int i=n-1; i&gt;n-k-1;--i),但你应该检查一下。

【讨论】:

  • 下溢呢? :-P(对不起,吹毛求疵。我真的知道你的意思。)
  • @Eduardo 好的,你是那些认为for(int i=0; i&gt;=0; i++); 不是无限循环的人之一。我很欣赏这一点,并且使用现代处理器,您甚至可以在 32 位系统上看到这样的循环结束。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
相关资源
最近更新 更多