我正在读一本编程书,其中一个示例是有关斐波那契数的,以及循环函数如何找到第n个斐波那契数。
代码如下:
Int fib (int n)
{
If (n<3)
Return (1);
Else
Return (fib(n-1))+(fib(n-2))
}
现在这是不正确的,因为我正在用手机打字,并且我已经了解了代码的工作方式,它一直在自我调用,直到返回1,然后将返回值加起来,直到您获得该位置的正确斐波那契数按顺序。
因此,我不需要代码方面的帮助。我确实需要帮助的是了解其工作原理。如何将所有 yield 相加得出正确答案?
请有人可以解释为什么这行得通。谢谢。这让我发疯了。
最佳答案
斐波那契数定义为两个前面的斐波那契数之和。这给出了以下内容:
1 1 2 3 5 8 13 ...
因此,对于第三个数字(1 1 2 ),您将获得查找前一个结果的结果-即第二个(1 1 2)并将其添加到前一个数字之前-即1st( 1 1 2 ) 数字。
您还必须了解,程序需要先计算前两个数字的值,然后才能计算您想知道的数字。因此,它会一直使用相同的方法来调用自身,直到计算出所有内容为止。
关于c++ - 斐波那契数,为什么此重复函数起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4092729/