使用遞迴來寫九九乘法表

遞迴(recursion),就是函式(function)不斷呼叫自身,直到條件滿足才停止。
撰寫遞迴程式碼時,要小心函式內的停止條件要設定好,以免造成無限迴圈。
遞迴是使用堆壘(stack),在記憶體中是後進先出。

九九乘法表程式碼

function multiply($x=1,$y=0)
{
    $y++;
    if($y > 9)
    {
        $x++;
        $y = 1;
        echo "<br />";
    }
    echo $x*$y." , ";
    if($x < 9 || $y < 9)
    {
        multiply($x,$y);
    }
}

multiply();

顯示結果:
1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,
2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 ,
3 , 6 , 9 , 12 , 15 , 18 , 21 , 24 , 27 ,
4 , 8 , 12 , 16 , 20 , 24 , 28 , 32 , 36 ,
5 , 10 , 15 , 20 , 25 , 30 , 35 , 40 , 45 ,
6 , 12 , 18 , 24 , 30 , 36 , 42 , 48 , 54 ,
7 , 14 , 21 , 28 , 35 , 42 , 49 , 56 , 63 ,
8 , 16 , 24 , 32 , 40 , 48 , 56 , 64 , 72 ,
9 , 18 , 27 , 36 , 45 , 54 , 63 , 72 , 81 ,


以下為說明
首先先建立一個函式,參數$x=1,$y=0,然後執行自己
為什麼$y=0?因為輸出是一列一列輸出,所以第一列應該是 1,2,3,4,5,6,7,8,9,(斷行)
而進入程式後首先$y就會加1,所以原始參數$y設定成0

function multiply($x=1,$y=0)
{

}
multiply();

在函式內部第一部份,$y先自己加1
然後設定一個條件,如果$y大於9時執行$x加1,$y回復成1,再輸出一個斷行

$y++;
if($y > 9)
{
    $x++;
    $y = 1;
    echo "<br />";
}

在函式內的第二個部份,輸出$x乘於$y再接分隔號

echo $x*$y." , ";

在函式的第三個部份,設定一個條件,如果$x或$y都小於9時反覆的執行自身(函式)

if($x < 9 || $y < 9)
{
    multiply($x,$y);
}