为了账号安全,请及时绑定邮箱和手机立即绑定

PHP中的递归

PHP中的递归

PHP
qq_天蝎的尾巴卍_0 2017-01-11 10:42:27
 function abc($num) {  if($num==1) { return 1; } else {   return $num*abc($num-1); }  }  echo abc(5);  //结果为 120; 递归的代码流程具体是怎么走的?
查看完整描述

3 回答

已采纳
?
KevenHuang

TA贡献280条经验 获得超233个赞

首先说一下函数的运行,函数的运行是在内存中新开一个栈,然后在栈内运行的,而递归就是指在函数内部调用自己,当一个函数在函数内部调用自己,它会立即开辟一个栈,然后运行函数,当然它要有一个递归点和递归出口,否则函数会无论调用造成死循环,递归点为在什么时候需要调用自己,递归出口为在什么时候不再调用自己,用一个例子来解释一下递归,就是你的朋友张三向你借钱,你又刚好不够,你又向你的朋友李四借钱,你的朋友李四钱又不够,李四又向他的朋友王五借钱,王五的钱够了,把钱交给李四,李四把钱交给你,你再把钱交给张三,这个过程是连续的,只有最后一个把钱凑够了才能往回走。递归大概就是这样,递归是以空间换时间的,所以递归是非常耗内存的。
查看完整回答
1 反对 回复 2017-01-11
点击展开后面5
?
蜂之谷

TA贡献564条经验 获得超863个赞

5*abc(4)

5*4*abc(3)

5*4*3*abc(2)

5*4*3*2*abc(1)

5*4*3*2*1 = 120

查看完整回答
1 反对 回复 2017-01-11
  • 3 回答
  • 1 关注
  • 1739 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信