【问题标题】:Fibonacci Sequence Formula Query [closed]斐波那契数列公式查询
【发布时间】:2013-03-04 12:25:44
【问题描述】:

我有这个代码

for(int Variable=2; Variable<N; Variable++)
{
    Answer = b + c;
    b = c;
    c = Answer;
}

当与我的所有其他代码一起计算答案时,它也适用。但是上面的代码我不明白它是如何工作的......只是寻找关于它如何给出正确答案的解释。谢谢!

【问题讨论】:

  • 为什么不写下该循环的作用,例如N=5?
  • 我不明白你的意思,我已经测试了这个程序并且它可以工作。只是不明白如何。正如我之前声明的那样,b = 1 和 c = 1。不要得到这部分 "Variable
  • @Craig 如果这是您没有得到的部分,您需要快速拿起一本介绍性 C++ 书籍。
  • 这是我们讲座表格中的一个示例,我们刚刚从 VB 开始使用 C++,所以只是想了解一下。
  • 参考您选择的 C++ 教科书并查阅“变量定义”和“for 循环”章节以了解语法。

标签: c++ fibonacci


【解决方案1】:

首先,您必须了解斐波那契数列的外观以及它是如何构建的。这里不讨论了,网上找找。然后尝试在一张纸上写下每个循环步骤的 Answer、b 和 c 的值,例如。

Variable | Answer  b  c
---------+-------------
(before) |   1     1  1
       2 |   2     1  2
       3 |   3     2  3
       4 |   5     3  5

...等等。

然后寻找这种“纸上调试”的值与斐波那契数列定义的相似之处,一切都会变得清晰。


编辑:

我了解,您在理解变量范围方面有问题?如果您在由{} 大括号表示的代码块中声明变量,则该变量将在该块中的任何位置可见和可修改。

{    
    {
        int b = 1, c = 1, Answer = 0;
        for(int Variable=2; Variable<N; Variable++)
        {
            // The b and c variables are visible here
            // and can be both read and written.

            Answer = b + c;
            b = c;
            c = Answer;
        }
    } 

    // However, they are no longer visible here.
}

【讨论】:

  • 谢谢,我现在明白了。如果我在上面声明,我只是不明白 b 和 c 的值是如何变化的; unsigned long long b = 1,c = 1,答案;只是不确定 b 和 c 值如何不断变化,具体取决于 N。
  • 尝试更清楚地提出问题。我不明白,你的问题从一开始到底是什么。
  • 啊,谢谢!这就说得通了!抱歉,完全新手,刚开始所以不太确定发生了什么。这是我对基础知识的理解; unsigned long long - 确保限制是正确的,即在处理大值时答案不会变得错误/否定变量 ++ - 增量,直到 N 的值?变量 = 2 - 由于前两个声明的值是 1,需要从上面的下一个值开始它只是变量
  • 并对问题的含糊表示歉意,下次会尝试做得更好。再次感谢。
【解决方案2】:

也许以下内容会有所帮助。当代码对斐波那契数进行迭代时,c 是最近的数,b 是紧接在此之前的数。

【讨论】:

  • 但是如果上面我声明了“unsigned long long b = 1, c = 1, Answer;”它是如何工作的?
猜你喜欢
  • 1970-01-01
  • 2015-06-05
  • 2013-08-03
  • 2014-05-19
  • 2015-08-30
  • 2013-03-14
  • 2013-02-24
相关资源
最近更新 更多