递归详细介绍,看后必懂!!

/10.1*2*3*4*5的递归乘级
//看我写的一定懂!!!!
//看下面代码
function  rcs(n){
	if(n==1){    
		return 1
	}
	return rcs(n-1)*n
}
document.write(rcs(5))//传进去的5
//执行步骤重点,
//第一轮
传值5进函数,
形参变成5 n=5
判断n==1,现在n=5,所以错误不进入
return是返回后面代码得出的值,在值没有得出结果不会执行
rcs(n-1)*n 此处重点,分解rcs(5-1)*5这个是个自调用
分解rcs(5-1)*5 结果是rcs(4)*5

//第二轮rcs(4)进去
传值4进函数,
形参变成4 n=4
判断n==1,现在n=4,所以错误不进入
return是返回后面代码得出的值,在值没有得出结果不会执行
rcs(n-1)*n 此处重点,分解rcs(4-1)*4这个是个自调用
分解rcs(4-1)*4 结果是rcs(3)*4

//第三轮rcs(3)进去
传值3进函数,
形参变成3 n=3
判断n==1,现在n=3,所以错误不进入
return是返回后面代码得出的值,在值没有得出结果不会执行
rcs(n-1)*n 此处重点,分解rcs(3-1)*3这个是个自调用
分解rcs(3-1)*3 结果是rcs(2)*3

//第四轮rcs(2)进去
传值2进函数,
形参变成2 n=2
判断n==1,现在n=2,所以错误不进入
return是返回后面代码得出的值,在值没有得出结果不会执行
rcs(n-1)*n 此处重点,分解rcs(2-1)*2这个是个自调用
分解rcs(2-1)*2 结果是rcs(1)*2

//第五轮
传值1进函数,
形参变成1 n=1
判断n==1,现在n=1,所以进入
开始执行 return ,return 1 到调用处
第五轮返回1到第四轮 return rcs(2-1)*2 到这里,解析就是rcs(2-1)的返回值是1,所以1*2=2,
得出结果就可以开始return!!了,返回到第三轮 return rcs(2-1)*2 

//第六轮
第四轮返回2到第三轮 return rcs(3-1)*3 到这里,解析就是rcs(3-1)的返回值是2,所以2*3=6,
得出结果就可以开始return!!了,返回到第二轮 return rcs(3-1)*3

//第七轮
第三轮返回6到第二轮 return rcs(4-1)*4 到这里,解析就是rcs(3-1)的返回值是6,所以6*4=24,
得出结果就可以开始return!!了,返回到第一轮 return rcs(4-1)*4

//第八轮
第二轮返回24到第一轮 return rcs(5-1)*5 到这里,解析就是rcs(5-1)的返回值是24,所以24*5=120,
最终返回给第一次调用者  return rcs(5-1)*5  这个值是120,

写得多,挨着慢慢看,边看边画就能懂!!!
写得多,挨着慢慢看,边看边画就能懂!!!
写得多,挨着慢慢看,边看边画就能懂!!!
写得多,挨着慢慢看,边看边画就能懂!!!

纯手写,把运行都一步一步写上了,不懂的人,只需要把每一轮画出来就会很明白

0-0。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值