2013-03-04 108 views
-3

我有这样的代码斐波那契序列式查询

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

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

+1

为什么不写下那个循环为例如N = 5? – 2013-03-04 12:29:08

+0

我不知道你的意思,我测试过程序,它的工作原理。只是不明白如何。正如我之前宣布的那样,b = 1和c = 1。 不要让这部分变量为“变量 Craig 2013-03-04 12:33:24

+1

@Craig如果这是您没有得到的部分,您需要快速选择一本介绍性的C++书* *。 – us2012 2013-03-04 12:36:12

回答

0

首先,你必须明白,斐波那契数列看起来是什么样以及它是如何构建的。我不会在这里讨论它,在互联网上寻找它。然后尝试在每张循环的步骤中在一张纸上写下Answer,b和c的值,例如。

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

...等等。

然后寻找这个“纸调试”的值与Fibonacci序列定义的相似之处,并且所有的都应该变得清楚。


编辑:

我明白了,您有了解变量的作用域的问题?如果在由{}大括号表示的代码块中声明变量,则在该块内的任何位置都可以看到和修改该变量。

{  
    { 
     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. 
} 
+0

谢谢,我现在就明白了。我只是没有得到b和c的值如何改变,如果我上面宣布; unsigned long long b = 1,c = 1,Answer; 只是不知道如何b和c值不断变化,取决于N. – Craig 2013-03-04 12:40:48

+0

尝试更清楚地问问题。我无法得到,从一开始你的问题实际上是什么。 – Spook 2013-03-04 12:46:46

+0

啊谢谢!这就说得通了!对不起,完全新手,刚刚开始,所以不知道发生了什么事。这是我对基本知识的理解; unsigned long long - 确保限制是正确的,即在处理大数值时答案不会变成错误/负数 变量++ - 增量,最大值为N? 变量= 2 - 由于前两个声明的值为1,需要从下面的值开始,高于 它只是变量 Craig 2013-03-04 12:50:02

0

也许以下将有所帮助。由于代码在Fibonacci数字上进行迭代,所以c是最近的数字,b是之前的数字。

+0

但是如果上面我声明, “unsigned long long b = 1,c = 1,Answer;” 这是如何工作的? – Craig 2013-03-04 12:34:26