怎么做
  1. 题面里的虚线方框就是要填的空
  2. 点候选项,它会填进当前高亮的那个空
  3. 点已填好的空,可以把选项取回来重选
  4. 全部填满后「提交」才会亮起
卡住了就点右下角的 👩‍🏫 问 AI 老师,她会给提示但不直接给答案。

斐波那契递归:一个调用分两叉

👁️ 23 人浏览 💬 0 人评论 ❤️ 添加收藏

fib(4) 的调用:每次分成两个更小的调用

f(4)
f(3)
f(2)
f(2)
f(1)

f(2) 又算了一遍

斐波那契数列 1, 1, 2, 3, 5, 8……从第 3 项起,每项是前两项之和。② 里用循环算过,用递归写更像定义本身:

#include <stdio.h>

int fib(int n)
{
    if (n == 1 || n == 2)
        return 1;
    return fib(n - 1) + fib(n - 2);
}

int main(void)
{
    printf("%d\n", fib(6));
    return 0;
}

和前一关不同:这里每一层要调用两次自己,调用会像树一样分叉,有些项会被重复计算。

程序输出【0】。如果改成计算 fib(5),fib(3) 会被调用【1】次,fib(2) 会被调用【2】次。

请登录后作答。
去登录
👩‍🏫
AI
💬 题目评论
🔒 登录并作答后可看讨论