js递归经典案例
js递归经典案例
首先,我们需要了解什么是递归,递归又具有什么样的特性等等的问题,这些都是我们需要考虑的问题。
递归的问题考虑方法如下:
1.一个是满足结束条件的时候结束函数。
2.一个是不满足结束条件的时候要执行的代码。
3. 首先去找临界值,即无需计算,获得的值。
4. 找这一次和上一次的关系
5. 假设当前函数已经可以使用,调用自身计算上一次
案例1:计算1~n的和?
案例分析:首先我们需要找到就拿1-100的案例的问题来解释,需求sum(100)就需要求出sum(99)加上100即可,以此类推,大约有一种高中数学归纳法,和数列的一些思想,sum(99)=sum(98)+99;以此类推就能得到规律sum(n) = sum(n - 1) + n;
案例分析:首先我们需要找到就拿1-100的案例的问题来解释,需求sum(100)就需要求出sum(99)加上100即可,以此类推,大约有一种高中数学归纳法,和数列的一些思想,sum(99)=sum(98)+99;以此类推就能得到规律sum(n) = sum(n - 1) + n;
案例2:猴子吃桃问题:
有一堆桃子不知数目,猴子第一天吃掉一半,觉得不过瘾,又多吃了一只,第二天照此办法, 吃掉剩下桃子的一半另加一只,天天如此,到第num(num <= 10)天早,猴子发现只剩一只桃子了,问这堆桃子原来有多少只?(思路:n为还剩n天吃完的桃子数)
案例解析:首先我们以还剩10天吃完桃子为例子,得出规律 :
peach(10)/2- 1=peach(9)
peach(10)=(peach(9)+1)*2
总结:peach(n)=(peach(n-1)+1)*2
案例3:求:n!
解题思路:1!=11=jice(1);
2!=jice(1)2=jice(2);
3!=jice(2)3=jice(3);
…
n!=123…(n-1)*n=jice(n);
总结规律:jice(n)=jice(n-1)*n;
案例4:求1!+2!+3!+4!+…+100!;采用递归的方法去实现。
案例分析:首先进行推导:
11=1 aff(1)
11+12=3 aff(2)
11 +12+123=9 aff(3)
由此总结出规律:aff(n)=aff(n-1)+n!;
然后我们现在需要想办法求出:n!的相应的表达式
1!=11=jice(1);
2!=jice(1)=jice(2);
3!=jice(2)=jice(3);
…
n!=123…*(n-1)*n=jice(n);
进这两番的推导的结合使用 得出:aff(n)=aff(n-1)+jice(n);
本文地址:https://blog.csdn.net/weixin_45664217/article/details/107260389
上一篇: webpack-4.0更新日志
下一篇: 小程序开发实例(tad分栏制作)