正在回答
同学你好,递归其实没有什么内容,就一个点,即在函数内部调用函数本身。不管做多少题,它们的核心原理都是一样的,换汤不换药。如果其中一个你能弄懂,其他的也非常容易理解了。如果一个不理解,那么做一百道也是无用的。课程中讲解的案例都是千挑万选的最经典的案例,如果同学能把课程中的学好,能把课后习题也做好,就可以掌握递归,无需消耗时间做无用功了。如果不理解,就建议同学多听几遍视频,多练习几遍,自己试着去理解。可以把自己的理解放在问答区,老师会为你指点,这样的学习效果才是更好的。
老师教你一个小方法,可以自己一步步去写出它的执行过程,这样会帮助你理解。例如本案例如下,我们先传入一个数值小点的参数,便于分析执行步骤:
1、例如调用fib(4),参数num=4。返回值为fib(3) + fib(2) ,但是这个返回值是调用了函数fib,那么需要内层调用的fib执行完毕之后,第一次调用fib才会返回具体的值。
2、调用fib(3) 和fib(2) ,fib(3)返回值为fib(2) + fib(1), fib(2)返回值为2(因为符合第二个if判断)。
3、调用fib(2) 和 fib(1),fib(2) 返回值为2,fib(1)返回值为1。 截止目前为止,没有再继续调用fib,全部返回值具体的值。则一层一层往上返回值。
fib(1) =1
fib(2)=2
fib(3)=fib(2) + fib(1)=2+1=3
fib(4)=fib(3) + fib(2)=3+2=5
推导之后,可以去验证一下:
输出结果为5:
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星