关于递归原理

来源:互联网 发布:中万网络工资怎么样 编辑:程序博客网 时间:2024/05/21 15:38

刚刚在看到function 的属性arguments实现递归方法,但一直接不明白递归的原理,查了资料,如下

function ar(nums)
   {
  if(nums <=1)
  {
return 1  
  }
  else
  {
   return nums * arguments.callee(nums-1);

/*

  当nums=5时,

return 5*4*3*2*1;

当nums=1;时就返回1并跳出递归

故得出来nums最后的结果为120;

引用别人的图


n=5时,开始调用

第1层

n=5

第2层

n=4

第3层

n=3

第4层

n=2

第3层

n=1

返回 1 2
返回 2
3
返回 6
4
返回 24
乘 5
返回 120

        */
  }
   }
   var rtu=ar;
   ar=function(){return 0};
   alert(rtu(5));
   alert(ar(5));

  • /* 
  •      * 普通递归: 
  •      * jc(5)==> 
  •      * 5*jc(4)--->表达式入栈 
  •      * 5*4*jc(3)--->上一步的jc(4)是递归表达式,所以此处要先对其进行出栈,计算完jc(4)=4*jc(3)后在将表达式4*jc(3)入栈 
  •      * 5*4*3*jc(2)--->同上 
  •      * 5*4*3*2*jc(1)--->同上 
  •      * 5*4*3*2*jc(1)  ==>由于n=1的时候函数返回的是一个常数1,这个时候表达式变成5*4*3*2*1,不含有任何函数了, 
  •      * 所以开始计算该表达式的结果,计算结果的过程也是一个出栈并计算的过程。 
  •      */ 

    原文地址:http://jqsl2012.iteye.com/blog/1214144

  • 原创粉丝点击
    热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 3dmax灯光全黑怎么办 高压15o低压1oo怎么办 源码一位乘法中c怎么办 怀孕搬了重东西怎么办 深蹲力量不涨怎么办 ps4连接显示器分辨率低怎么办 大疆失去链接后怎么办 脑袋被锤了几拳怎么办 华为手机变板砖怎么办 电脑网页打开很慢怎么办 网页加载速度太慢.怎么办 cad字显示不出来怎么办 dell笔记本打不开机怎么办 手机系统界面已停止运行怎么办 大石退出菊丸怎么办 word空白页面突然变大了怎么办 高速上车胎爆了怎么办 没有定速巡航跑长途怎么办 惠普笔记本驱动无法安装怎么办 狙击手遇到热追踪导弹怎么办 做完卷腹脖子疼怎么办 医疗设备销售遭遇瓶颈怎么办 给顾客加油加超了怎么办 卡密码输错两次怎么办 擤鼻涕耳朵会响怎么办 鼻子里有血丝是怎么办 怀孕8周上火了怎么办 鼻炎犯了鼻涕流不停怎么办 擤鼻涕眼睛肿了怎么办 感冒咳嗽鼻子不通气怎么办 宝宝感冒不会擤鼻涕怎么办 新生儿鼻腔里有鼻涕怎么办 宝宝鼻腔有鼻涕出不来怎么办 怀孕的人感冒了怎么办 孕37周感冒咳嗽怎么办 吹鼻涕耳朵堵了怎么办 怀孕的孔雀鱼生病了怎么办 生病了咳嗽一直不好怎么办 宝宝生病治疗后咳嗽怎么办 2个月宝宝老是生病怎么办 2个月的哈士奇生病怎么办