最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript遞歸函數(shù)定義與用法實例分析

 更新時間:2019年01月24日 12:06:14   作者:deniro_li  
這篇文章主要介紹了JavaScript遞歸函數(shù)定義與用法,結(jié)合實例形式分析了javascript遞歸的原理、函數(shù)定義、使用方法及操作注意事項,需要的朋友可以參考下

本文實例講述了JavaScript遞歸函數(shù)定義與用法。分享給大家供大家參考,具體如下:

遞歸函數(shù)是一個函數(shù)通過名字調(diào)用自身的情況下形成的,比如經(jīng)典的遞歸階乘函數(shù):

function factorial(num) {
  if (num <= 1) {
    return 1;
  } else {
    return num * factorial(num - 1);
  }
}

上面的這種寫法,可能會造成問題:

var anotherFactorial = factorial;
factorial = null;
console.log(anotherFactorial(4));//出錯

因為 factorial 函數(shù)定義內(nèi)部使用了自身的函數(shù)名,所以當(dāng) factorial 被置為 null 后,factorial 已不是函數(shù),自然報錯啦 O(∩_∩)O~。

可以使用 arguments.callee 指向正在執(zhí)行的函數(shù)的指針來避免上面出現(xiàn)的問題:

function factorial(num) {
  if (num <= 1) {
    return 1;
  } else {
    return num * arguments.callee(num - 1);
  }
}
var anotherFactorial = factorial;
factorial = null;
console.log(anotherFactorial(4));

運行結(jié)果:24

但在嚴(yán)格模式下,不能訪問 arguments.callee,但可以使用命名函數(shù)表達式來實現(xiàn)上述功能:

var factorial = (
    function f(num) {
      if (num <= 1) {
        return 1;
      } else {
        return num * f(num - 1);
      }
    }
);
var anotherFactorial = factorial;
factorial = null;
console.log(anotherFactorial(4));

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

相關(guān)文章

最新評論

汨罗市| 开远市| 元氏县| 佳木斯市| 万载县| 依安县| 山东| 绥德县| 康乐县| 宁明县| 义乌市| 扎赉特旗| 册亨县| 原阳县| 茶陵县| 赣榆县| 大名县| 云龙县| 教育| 镇康县| 宜兴市| 新巴尔虎右旗| 合山市| 阳山县| 门源| 阜新市| 扬中市| 合水县| 庆阳市| 布尔津县| 黑水县| 寿光市| 伊通| 莲花县| 江孜县| 台江县| 横山县| 铜梁县| 云霄县| 仁布县| 梓潼县|