递归函数怎么理解呢?

例子

 <?php

    function test( $n ) {                       
        echo $n."&nbsp;&nbsp;";                 

        if($n>0)                            
            test($n-1);                         
        else                                    
            echo " <--> ";                  

        echo $n."&nbsp;&nbsp;";                 
    }

    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的顺序出来

简单说就是自己调用自己,类似于循环