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

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

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

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

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

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

上面的這種寫(xiě)法,可能會(huì)造成問(wèn)題:

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

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

可以使用 arguments.callee 指向正在執(zhí)行的函數(shù)的指針來(lái)避免上面出現(xiàn)的問(wè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));

運(yùn)行結(jié)果:24

但在嚴(yán)格模式下,不能訪問(wèn) arguments.callee,但可以使用命名函數(shù)表達(dá)式來(lái)實(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代碼運(yùn)行工具http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。

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

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

相關(guān)文章

最新評(píng)論

麻栗坡县| 青龙| 大洼县| 新田县| 连江县| 若尔盖县| 山东| 南靖县| 秭归县| 吴忠市| 丹寨县| 张家界市| 仪陇县| 新建县| 海安县| 凤山市| 冕宁县| 宜州市| 化州市| 合川市| 开原市| 昌宁县| 当涂县| 德令哈市| 越西县| 东丰县| 灵山县| 芦溪县| 新津县| 印江| 泸定县| 宁安市| 枣阳市| 神木县| 双流县| 绥化市| 长兴县| 腾冲县| 中江县| 涿州市| 垦利县|