84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
有一个这样的递归函数
function abc($num) {
if($num==1) {
return 1;
} else {
return $num*abc($num-1);
}
echo abc(5); //结果为 120;
递归的代码流程具体是怎么走的啊?
PHP の再帰について質問がありますか? -PHP中国語サイトQ&A-PHPの再帰について質問します。 -PHP中国語サイトQ&A
ぜひ見て学んでください。
首先说一下函数的运行,函数的运行是在内存中新开一个栈,然后在栈内运行的,而递归就是指在函数内部调用自己,当一个函数在函数内部调用自己,它会立即开辟一个栈,然后运行函数,当然它要有一个递归点和递归出口,否则函数会无论调用造成死循环,递归点为在什么时候需要调用自己,递归出口为在什么时候不再调用自己,用一个例子来解释一下递归,就是你的朋友张三向你借钱,你又刚好不够,你又向你的朋友李四借钱,你的朋友李四钱又不够,李四又向他的朋友王五借钱,王五的钱够了,把钱交给李四,李四把钱交给你,你再把钱交给张三,这个过程是连续的,只有最后一个把钱凑够了才能往回走。递归大概就是这样,递归是以空间换时间的,所以递归是非常耗内存的。
PHP の再帰について質問がありますか? -PHP中国語サイトQ&A-PHPの再帰について質問します。 -PHP中国語サイトQ&A
ぜひ見て学んでください。
首先说一下函数的运行,函数的运行是在内存中新开一个栈,然后在栈内运行的,而递归就是指在函数内部调用自己,当一个函数在函数内部调用自己,它会立即开辟一个栈,然后运行函数,当然它要有一个递归点和递归出口,否则函数会无论调用造成死循环,递归点为在什么时候需要调用自己,递归出口为在什么时候不再调用自己,用一个例子来解释一下递归,就是你的朋友张三向你借钱,你又刚好不够,你又向你的朋友李四借钱,你的朋友李四钱又不够,李四又向他的朋友王五借钱,王五的钱够了,把钱交给李四,李四把钱交给你,你再把钱交给张三,这个过程是连续的,只有最后一个把钱凑够了才能往回走。递归大概就是这样,递归是以空间换时间的,所以递归是非常耗内存的。