c++ - 递归如何获得先前的值?
问题描述
我在学习c ++的基础知识中,遇到了一个我不明白的递归示例。该等式适用于斐波那契数列,如下所示:
int fibo(int f)
{
if (f < 3)
{
return 1;
}
else
{
return fibo(f - 2) + fibo(f - 1);
}
}
“else”语句如何工作?我知道它将前面的两个数字相加得到当前的斐波那契数,但是在没有任何先验信息的情况下,它怎么知道从哪里开始呢?如果我想要第 7 个斐波那契数,它怎么知道第 6 个和第 5 个数是什么?
解决方案
在这个给定的等式中,它将深入根部。当您最初给定值 7 时,它会自行运行以获取 7-2 = 5 和 7-1=6 的值,但它仍然没有 5 和 6 的值。因此它将进一步将 5 的值减小到 3和 4 和 6 到 5 和 4。最后,当 f 小于 3 时,它将返回值 1。在获得根值之后,它会将这些值相加以获得总答案。
推荐阅读
- facebook - 为什么 Facebook Graph API 会一遍又一遍地使用相同的“下一个”URL 响应?
- powerbi - 无法识别 3 字节二进制日期获取变量的 Power Query 转换
- javascript - Facebook Graph API 长寿命令牌
- json - 如何删除 JSONB 数组 Postgresql 数组对象中的多个值
- mysql - 无法通过 MATLAB 连接到 MariaDB - 无效的 MEX 文件
- sql - 如何在 Postgres/plpgsql 的视图定义中使用变量
- javascript - 有没有办法在 testcafe 中断言具有部分文件名的下载文件?
- mongodb - Mongoose / mongoDB - 如何按字符串排序?
- java - 对单例类方法的并发调用会产生不一致的结果
- java - Heroku 找不到工人