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

首頁 > 編程 > JavaScript > 正文

JavaScript遞歸操作實例淺析

2019-11-20 08:37:32
字體:
來源:轉載
供稿:網友

本文實例分析了JavaScript遞歸操作。分享給大家供大家參考,具體如下:

問題

一個簡單的遞歸,求n的階乘:

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

如果像下面這樣使用它,則會出錯:

var fcopy = factorial;factorial = null;alert(fcopy(3));

因為fcopy指向的函數實體調用了factorial,而factorial已經被釋放。

解決的辦法

使用arguments.callee

執行流進入函數時會創建函數的運行環境(作用域鏈等),包括 arguments 這個特殊對象,arguments對象有個屬性指向函數本身:arguments.callee 。

function factorial(n){  if (n<=1)  {    return 1;  }else{    return arguments.callee(n-1)*n;  }}

不過callee在嚴格模式下不可用。

使用函數表達式

var factorial = (function f(n){  if (n<=1)  {    return 1;  }else{    return f(n-1)*n;  }})

這并非使用了什么新的技術,只是在原來概念上的一種應用,在定義 factorial 時,直接創建一個函數,再將此函數的引用賦值給factorial。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript遍歷算法與技巧總結》、《JavaScript數組操作技巧總結》、《JavaScript數學運算用法總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript動畫特效與技巧匯總》及《JavaScript錯誤與調試技巧總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇沅| 青冈县| 将乐县| 宁乡县| 报价| 耒阳市| 张家港市| 庆云县| 中牟县| 当雄县| 清徐县| 铜山县| 揭东县| 策勒县| 石渠县| 宣武区| 安康市| 宁阳县| 会昌县| 邯郸县| 长乐市| 顺义区| 黄石市| 玉山县| 河源市| 巴马| 石首市| 山阴县| 荣昌县| 左云县| 霍林郭勒市| 湘阴县| 永泰县| 全椒县| 乌审旗| 陇南市| 绥化市| 华蓥市| 河西区| 偏关县| 祁阳县|