首页 > 解决方案 > 递归如何获得先前的值?

问题描述

我在学习c ++的基础知识中,遇到了一个我不明白的递归示例。该等式适用于斐波那契数列,如下所示:

int fibo(int f)
{
    if (f < 3)
    {
        return 1;
    }
    else
    {
        return fibo(f - 2) + fibo(f - 1);
    }
}

“else”语句如何工作?我知道它将前面的两个数字相加得到当前的斐波那契数,但是在没有任何先验信息的情况下,它怎么知道从哪里开始呢?如果我想要第 7 个斐波那契数,它怎么知道第 6 个和第 5 个数是什么?

标签: c++

解决方案


在这个给定的等式中,它将深入根部。当您最初给定值 7 时,它会自行运行以获取 7-2 = 5 和 7-1=6 的值,但它仍然没有 5 和 6 的值。因此它将进一步将 5 的值减小到 3和 4 和 6 到 5 和 4。最后,当 f 小于 3 时,它将返回值 1。在获得根值之后,它会将这些值相加以获得总答案。


推荐阅读