2020-11-22
程序员文章站
2022-06-03 12:09:14
...
什么是递归?(Javescrip)
我自己总结了一下三点
- 函数自己调用自己
- 一般情况下有参数
- 一般情况下有return值
递归可以解决什么
【注】递归可以解决循环解决的一切事情,也可以解决循环不易解决的事情。
【注】递归都可以无压力的写出来,但是你不知道为什么是对的。很神奇哦!
根据这个小例子,来认识递归
//求1~n的和
怎么写递归呢,我总结了以下三点。
// 1.找到一个临界值
//什么是临界值:就是不用计算,就可以得到的值,或者口算可以得到的值,就是临界值
// 2.找这一次和上一次的规律
//sum(100) = sum(99) + sum(100)
//sum(n) = sum(n - 1) + sum(n)
// 3.假设这个函数已经可以用了,调用自己计算一次。
function sum(n) {
if (n == 1) {//这就是临界值
return 1;
}
return sum(n - 1) + n;
}
alert(sum(100));
为什么递归在公司明文禁止使用?(垃圾回收机制)
- 先开一个空间,计算sum100的值,但是不知到sun100是多少,所以要再开一个空间计算sum99的值~~~一直开到sum2,sum1。这时候知道了sum1的值,然后就一个一个释放空间,释放sum1的空间,sum2的空间,然后直到释放sum100的空间,跳出循环。(如下图示)
- 但是计算机计算速度很快,一开始递归会瞬间开出100个空间来储存,后面会瞬间释放,程序就会蓝屏或者死机。这是很危险的,所以明文禁止使用递归。但是也不排除会有少部分使用。
创作不易
转载请标明出处。
下一篇: 字典序的递归写法