- 递归的概念
简单的说就是函数自己调用自己 - 递归的构成
1、假设递归函数已经写好
2、寻找递推关系
3、将递推关系的结构转换为递归体
4、将临界条件加入到递归体中(一定要加临界条件,某则陷入死循环,内存泄漏)
那什么样的场景用弟归呢,举一下通俗的例子:
假如老百姓每生一个儿子,政府就给100块钱补助,算一下你家四代后政府一共给了多少补助。这个例子是不是很通俗。下边我们用JS写一下这个程序:
var yeye= {
name:"王一",
haizi:[
{
name:"王一 一",
haizi:[
{name:"王小一"}
]},
{
name:"王一 二",
haizi:[
{name:"王小二"}
]},
{
name:"王一 二",
haizi:[
{name:"王小三"}
]},
]
}
buzhu = 0
function jishuan( fubei){
if((fubei.haizi||[]).length){ //如果有下一代进入循环,没有退出
buzhu += fubei.haizi.length*100; //累加补助
for(var i=0;i<fubei.haizi.length;i++){
jishuan( fubei.haizi[i]) //用方法本身再计算下一代的下一代,直到没有下一代退出函数
}
}
}