我有这样的代码斐波那契序列式查询
for(int Variable=2; Variable<N; Variable++)
{
Answer = b + c;
b = c;
c = Answer;
}
而且它适用于所有我的其他代码时,计算答案。然而,上面的代码我不明白它是如何工作的....只是寻找解释如何给出正确的答案。谢谢!
我有这样的代码斐波那契序列式查询
for(int Variable=2; Variable<N; Variable++)
{
Answer = b + c;
b = c;
c = Answer;
}
而且它适用于所有我的其他代码时,计算答案。然而,上面的代码我不明白它是如何工作的....只是寻找解释如何给出正确的答案。谢谢!
首先,你必须明白,斐波那契数列看起来是什么样以及它是如何构建的。我不会在这里讨论它,在互联网上寻找它。然后尝试在每张循环的步骤中在一张纸上写下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.
}
谢谢,我现在就明白了。我只是没有得到b和c的值如何改变,如果我上面宣布; unsigned long long b = 1,c = 1,Answer; 只是不知道如何b和c值不断变化,取决于N. – Craig 2013-03-04 12:40:48
尝试更清楚地问问题。我无法得到,从一开始你的问题实际上是什么。 – Spook 2013-03-04 12:46:46
啊谢谢!这就说得通了!对不起,完全新手,刚刚开始,所以不知道发生了什么事。这是我对基本知识的理解; unsigned long long - 确保限制是正确的,即在处理大数值时答案不会变成错误/负数 变量++ - 增量,最大值为N? 变量= 2 - 由于前两个声明的值为1,需要从下面的值开始,高于 它只是变量
也许以下将有所帮助。由于代码在Fibonacci数字上进行迭代,所以c
是最近的数字,b
是之前的数字。
但是如果上面我声明, “unsigned long long b = 1,c = 1,Answer;” 这是如何工作的? – Craig 2013-03-04 12:34:26
为什么不写下那个循环为例如N = 5? – 2013-03-04 12:29:08
我不知道你的意思,我测试过程序,它的工作原理。只是不明白如何。正如我之前宣布的那样,b = 1和c = 1。 不要让这部分变量为“变量
Craig
2013-03-04 12:33:24
@Craig如果这是您没有得到的部分,您需要快速选择一本介绍性的C++书* *。 – us2012 2013-03-04 12:36:12