鱼C论坛

 找回密码
 立即注册
查看: 864|回复: 2

[已解决]C语言小白;卷子上的一道题不会,请教大家。

[复制链接]
发表于 2022-1-18 17:19:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下,我正在学习c语言,目前学的有点费解,这是卷子上的一道题,答案是13,自己打一遍的结果也是13,但我想不明白为什么。有大佬帮忙解答一下吗?
#include <stdio.h>

int f(int n){
        
        if (n == 0){
                return 1;
        }
        if (n == 1){
                return 1;
        }
        return f(n-1)+f(n-2);
        
}

int main(){
        
        printf("%d", f(6));

        return 0;
        
}

最佳答案
2022-1-18 17:32:26
f(n-1) + f(n-2); n = 6
(6-1) + (6-2) =  5 + 3
n = 5                       n = 3
(5-1) + (5-2) = 4 + 2       (3-1) + (3 -2) = 2 + 1
n = 4                       n = 2    
(4-1) + (4-2) = 3 + 2       (2-1) + (2 -2) = 1+0
n = 1 return 1              n = 0 return 1

然后就往上推, 
n = 2 时 结果就是 1 + 1 = 2
n = 3 时 结果就是 2 + 1 = 3
n = 4 时 结果就是 3 + 2 = 5
n = 5 时 结果就是 5 + 3 = 8
n = 6 时 结果就是 8 + 5 = 13
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-18 17:32:26 | 显示全部楼层    本楼为最佳答案   
f(n-1) + f(n-2); n = 6
(6-1) + (6-2) =  5 + 3
n = 5                       n = 3
(5-1) + (5-2) = 4 + 2       (3-1) + (3 -2) = 2 + 1
n = 4                       n = 2    
(4-1) + (4-2) = 3 + 2       (2-1) + (2 -2) = 1+0
n = 1 return 1              n = 0 return 1

然后就往上推, 
n = 2 时 结果就是 1 + 1 = 2
n = 3 时 结果就是 2 + 1 = 3
n = 4 时 结果就是 3 + 2 = 5
n = 5 时 结果就是 5 + 3 = 8
n = 6 时 结果就是 8 + 5 = 13
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-18 18:54:10 | 显示全部楼层
和斐波那契数列类似,斐波那契数列是F(0) = 0 F(1) = 1
只求结果没什么意义,数学归纳法也能算出来。重点是递归 和 dp思想

这里有篇分析斐波那契数列的,建议你好好研究下
https://leetcode-cn.com/problems ... na-qi-shu-lie-1yxx/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-4 01:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表