递归
技术小白,从最基础的开始分享,适用初学者,如有误点还望指正。
本篇内容递归(有搬运内容)
什么是递归,递归就是函数调用函数自身
递归一般有参数
一般情况下有return
小白如我学渣如我达不到理解递归的程度,就是能写,想写的话有一个框框
这个框框我们姑且称他为最强王者法则!!!
最强王者法则:
1先找临界值,即无需计算,获得的值。
2.找这一次和上一次的关系。
3假设当前函数已可用,调用自身算上一次和这一次的关系。
例:计算1加到n的值
function sum(n){
if(n == 1){
return 1;
}
return sum(n - 1) + n;
}
alert(sum(100));
最后的输出结果是5050,遍历成功;
可以看出来,思路就是最后他肯定会加回到1,于是if,实参帮助确定这个不确定的值,确定执行次数,最后加出来。
但!
这个东西在计算机内存里是这么跑的
它会一级一级往下走,直到走到最后一个再全部释放出结果,
so
如果这个栗子是像我这样算到一百那还好,但如果这个数无穷大,电脑本身实力又不过硬的话…
练习题
任意数相加
function add(){
var sum = 0;
for(var i = 0; i < arguments.length; i++){
sum += arguments[i];
}
return sum;
}
alert(add(10, 20, 30));
输出不确定数量的helloworld
function print(n){
if(n == 0){
return;
}
document.write("hello_world<br/>");
return print(n - 1);
}
print(5);