官术网_书友最值得收藏!

4.5 遞歸函數(shù)

視頻講解

所謂遞歸函數(shù)就是函數(shù)在自身的函數(shù)體內(nèi)調(diào)用自身,使用遞歸函數(shù)時一定要當心,處理不當會使程序進入死循環(huán),遞歸函數(shù)只在特定的情況下使用,如處理階乘問題。

語法如下:

    function 函數(shù)名(參數(shù)1){
        函數(shù)名(參數(shù)2);
    }

例如,使用遞歸函數(shù)取得10!的值,其中10!=10*9!,而9!=9*8!,以此類推,最后1!=1,這樣的數(shù)學公式在JavaScript程序中可以很容易使用函數(shù)進行描述,可以使用f(n)表示n!的值,當1<n<10時,f(n)=n*f(n-1),當n≤1時,f(n)=1。代碼如下:

    01  function f(num){               //定義遞歸函數(shù)
    02     if(num<=1){                 //如果參數(shù)num的值小于等于1
    03         return 1;               //返回1
    04     }else{
    05         return f(num-1)*num;    //調(diào)用遞歸函數(shù)
    06     }
    07  }
    08  alert("10!的結(jié)果為:"+f(10));  //調(diào)用函數(shù)輸出10的階乘

本實例運行結(jié)果如圖4.11所示。

圖4.11 輸出10的階乘

在定義遞歸函數(shù)時需要兩個必要條件。

 包括一個結(jié)束遞歸的條件。

如上面示例中的if(num<=1)語句,如果滿足條件則執(zhí)行“return 1;”語句,不再遞歸。

 包括一個遞歸調(diào)用語句。

如上面示例中的“return f(num-1)*num;”語句,用于實現(xiàn)調(diào)用遞歸函數(shù)。

主站蜘蛛池模板: 徐水县| 遂川县| 东宁县| 吴旗县| 通榆县| 枣庄市| 渝中区| 赤水市| 道孚县| 龙州县| 华蓥市| 舞钢市| 海宁市| 荣成市| 田阳县| 应城市| 南昌县| 喀喇沁旗| 精河县| 天祝| 峨山| 四会市| 松江区| 凌云县| 靖江市| 华亭县| 焦作市| 蓬溪县| 扶余县| 北碚区| 黎平县| 汾阳市| 田阳县| 那坡县| 台北县| 资溪县| 瓮安县| 千阳县| 松潘县| 夹江县| 重庆市|