1.通過函式自身名字遞迴呼叫
functionsum(num)
else
}console.log(sum(5));//
15
這種通過函式名字呼叫自身的方式存在乙個問題:函式的名字是乙個指向函式物件的指標,如果我們把函式的名字與函式物件本身的指向關係斷開,這種方式執行時將出現錯誤。
2.通過arguments.callee呼叫函式自身
functionsum(num)
else
}console.log(sum(5));//
15var sumanother=sum;
console.log(sumanother(5));//
15sum=null
;console.log(sumanother(5));//
15
這種方式很好的解決了函式名指向變更時導致遞迴呼叫時找不到自身的問題。但是這種方式也不是很完美,因為在嚴格模式下是禁止使用arguments.callee的。
3.通過函式命名表示式來實現arguments.callee的效果。
var sum=(function()else
}})()
console.log(sum(5));//
15var sumanother=sum;
console.log(sumanother(5));//
15sum=null
;console.log(sumanother(5));//
15
js函式的宣告及自呼叫
在js中函式通常擁有兩種命名方式 1.函式宣告 function a,b,c.函式宣告必須以function欄位開頭,是該函式的函式名,小括號中的a,b,c是該函式引用的引數,大括號中是該函式的具體方法。使用函式宣告的函式會提公升其優先度,因此我們可以在同一作用域的任何區域宣告,不會影響我們使用。2...
放蘋果 遞迴與函式自呼叫演算法
描述 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。輸入第一行是測試資料的數目t 0 t 20 以下每行均包含二個整數m和n,以空格分開。1 m,n 10。輸出對輸入的每組資料m和n,用一行輸出相應的k。樣例輸入 ...
數的計算 遞迴與函式自呼叫演算法
題目描述description 我們要求找出具有下列性質數的個數 包含輸入的自然數n 先輸入乙個自然數n n 1000 然後對此自然數按照如下方法進行處理 1.不作任何處理 2.在它的左邊加上乙個自然數,但該自然數不能超過原數的一半 3.加上數後,繼續按此規則進行處理,直到不能再加自然數為止.輸入輸...