正在回答
同学你好,问题解答如下:
1、可以结合代码的执行过程理解,这个计算过程是计算机在底层帮我们去做的,不会显示的展示出来,这里是为了方便同学理解,示例:
当执行fn(5)这句代码,调用fn函数时,过程如下
f(5) = "抱着" + fn(4) + "的我"
f(4) = "抱着" + fn(3) + "的我"
f(3) = "抱着" + fn(2) + "的我"
f(2) = "抱着" + fn(1) + "的我"
f(1) = "我的小鲤鱼"
根据f(1)的值倒推到f(5)值
f(2) = "抱着" + fn(1) + "的我" = "抱着 我的小鲤鱼 的我"
f(3) = "抱着" + fn(2) + "的我" = "抱着 抱着 我的小鲤鱼 的我 的我"
f(4) = "抱着" + fn(3) + "的我" = "抱着 抱着 抱着 我的小鲤鱼 的我 的我 的我"
f(5) = "抱着" + fn(4) + "的我" = "抱着 抱着 抱着 抱着 我的小鲤鱼 的我 的我 的我 的我"
所以最终结果为"抱着 抱着 抱着 抱着 我的小鲤鱼 的我 的我 的我 的我"
2、斐波那契数列也是同样的思路,以fib(5)为例:
fib(5) = fib(4) + fib(3)
fib(4) = fib(3) + fib(2)
fib(3) = fib(2) + fib(1)
fib(2) = fib(1) + fib(0)
fib(1) = 1
fib(0) = 1
根据fib(1)和fib(0)的值倒推
fib(2) = fib(1) + fib(0) = 1 + 1 = 2
fib(3) = fib(2) + fib(1) = 2 + 1 = 3
fib(4) = fib(3) + fib(2) = 3 + 2 = 5
fib(5) = fib(4) + fib(3) = 5 + 3 = 8
所以最终可以得到fib(5)的值为8
递归的内容都不太好理解,想不明白是正常的,压力不用太大。js部分,并不需要所有内容都听懂学会,学会70%就相当不错了,很多内容短时间内是捉摸不透的,要学会取舍,再加上js逻辑这种东西,并不是逼自己就能明白的,所以一定不要压力过大。
学不会的东西,建议暂时记下来,有空就回头看看,多来几次,说不定哪天就灵机一动、醍醐灌顶了。递归的内容,同学可以将具体的数据代入代码,一步步分析代码怎么执行,最后输出的结果是什么样的,会分析代码逻辑就可以了。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星