例子
<?php
function test( $n ) {
echo $n." ";
if($n>0)
test($n-1);
else
echo " <--> ";
echo $n." ";
}
test(10);
?>
输出:
10 9 8 7 6 5 4 3 2 1 0 <--> 0 1 2 3 4 5 6 7 8 9 10
这后半部分的1 2 3 4 5 6 7 8 9 10 是怎么输出出来的?
不理解
1.什么是递归函数(recursive function)
递归函数即自调用函数,在函数体内部直接或间接地自己调用自己,即函数的嵌套调用是函数本身。
例如,下面的程序为求n!:
long fact(int n)
{
if(n==1)
return 1;
re......
答案就在这里:递归函数理解
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。
很好理解,递归就是自己调用自己。
如果先调用,再输出,那么就相当于堆栈,因为先调用内侧,再输出自身,而内侧又先调用内侧的内侧……结果就是最内侧先执行,再外面一层,再再外面一层……
如果先输出,再调用,就相当于队列。这种情况也叫做尾递归。
<--> 前面的数字是满足 n>0 这个条件,然后就会一直调用自身,输出数字,当n=0的时候,不满足n>0这个条件,就会输出<-->和0,但是之前函数调用自身调用了10次,所以在结束这个函数的时候,就会先返回到最近的一次调用自身,然后再返回到上一次,一直返回10次。
就像你上课时候给喜欢的人写纸条,你们两人中间隔了10个同学,你写好纸条之后,把纸条递给第一个同学,第一个同学递给第二个...一直到第十个同学递给你喜欢的那个人,TA回复你的时候,也是将纸条先递给第十个同学,第十个同学递给第九个。。。一直到第一个同学递给你,这样就完成了一次递归过程,所以递是你一步一步递过去,归是一步一步再原路返回过来。
递归就像一个栈,(就是放东西的桶)。你先把东西一直往里放,放的只能在上面。然后桶满了(到达递归终止条件),再往外哪。拿出来的明显是上面的。所以,你用10 9 8 7 6 5 4 3 2 1 0的顺序把东西放进去,就会以0 1 2 3 4 5 6 7 8 9 10的顺序出来
递归就像一个栈,(就是放东西的桶)。你先把东西一直往里放,放的只能在上面。然后桶满了(到达递归终止条件),再往外哪。拿出来的明显是上面的。所以,你用10 9 8 7 6 5 4 3 2 1 0的顺序把东西放进去,就会以0 1 2 3 4 5 6 7 8 9 10的顺序出来
简单说就是自己调用自己,类似于循环