国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript遞歸函數定義與用法實例分析

2024-05-06 15:42:55
字體:
來源:轉載
供稿:網友

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

遞歸函數是一個函數通過名字調用自身的情況下形成的,比如經典的遞歸階乘函數:

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

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

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

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

可以使用 arguments.callee 指向正在執行的函數的指針來避免上面出現的問題:

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

運行結果:24

但在嚴格模式下,不能訪問 arguments.callee,但可以使用命名函數表達式來實現上述功能:

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.Vevb.com/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數據結構與算法技巧總結》、《JavaScript數學運算用法總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結》

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 崇文区| 孝感市| 鹤岗市| 宁晋县| 门头沟区| 浙江省| 克山县| 休宁县| 博野县| 抚顺县| 乌兰察布市| 揭东县| 大新县| 和田市| 通江县| 灌阳县| 临清市| 老河口市| 沙洋县| 越西县| 维西| 新乡市| 白朗县| 太原市| 华宁县| 邢台市| 沧州市| 朝阳县| 文化| 万全县| 丹棱县| 揭西县| 乌兰浩特市| 宜兰县| 安化县| 扎赉特旗| 游戏| 称多县| 漾濞| 基隆市| 嘉义县|