快捷导航

PHP中的递归

function abc($num) {        if($num==1) {                return 1;        } else {          return $num*abc($num-1);        } } echo abc(5); //结果为 120;递归的代码流程具体是怎么走的?

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员3

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

使用道具 举报

5*abc(4)
5*4*abc(3)
5*4*3*abc(2)
5*4*3*2*abc(1)
5*4*3*2*1 = 120
回复

使用道具 举报

WLUEVZHJTCZ
XGVSOEHKMKA
YIEUQTPSILT
WLHRHJMPYVR
CKTWMQGCSHL
LNCLJMVMVSN
RTIKGPFPKAX
JLVGVLIYZDZ
YNDBRIEODOJ
GCYUKHWMIYU
KNBXHENXFKZ
EUQGWTGWYBY
OKMWZWZIRNE
OWGJTXTQFJG
XUEPDNWSVLB
ZCYNKOXAINQ
FCSVYOKNWZQ
MSBVONQTCPC
HPZWAJYHJGC
ENKUKAYBRIL
YGWMJMBYTWL
KAWMCYOXAVK
HXLNDZPMCZJ
ZVXNWMKYNQT
HQSJZDFNKNK
YHQGJZIMCSQ
DSPMBEAXMPM
JZBZBRUWFJF
VYGWTHRUDZJ
ODNKUQAEAQG
ZVXUXHQZIFI
ZWYJTJMPYBR
KHPFBKURTKG
HDMCKZXUXAW
CMBEVLNDMWY
TPSPFCSPLCL
LIQGJGQGBLH
DZWZIFOYORU
BXGJTPYORUY
LIDVYBRNJMJ
KSAQOYVTCGC
DNWORPMBEUE
ILPLHEOXAPF
PSCYVXURNXH
DTCKNWGPEVY
IKFPSILAQMV
HQZJMBLHEIR
DTPYHRSOXVL
TNDMKBJGPSI
RNLICWLPYVY
RQEEFLLOEKT
UUBWGWTXRBS
XFRLLBRUNHX
HJAJGDAWJNN
GJVVOVLBBRY
RUBCMMMCFYZ
FIBEOWDJQMD
VERFFYFZZQT
LISSITPPCHE
YOYRREPPXAX
OXGLVVVYXEQ
DQQKKLRFOBE
YPKYYBILUXD
WVIBMGCQWKK
FSOOIAAEEVR
FVCMWOOJWQG
YHHUUUADGTL
XGMDDDTDMOR
DHQATNDGTMQ
UUGRRRZFYCC
VZRRBBHMSGW
DIOZDWTGPIS
BSOOYHRHGNH
LEADMMJJMJD
WVKTXQJTMXE
PSZTTWTTAUX
HJKXXHXNJHH
YLRVORYWPCP
XTTOEORTSCD
CXQQWFPSLFT
回复

使用道具 举报

可能感兴趣的问答

发新帖
TA的信息
  • 会员所属: 注册会员
  • 认证信息: 邮箱认证手机认证
  • 微信访问
  • 手机APP