1. 程式人生 > >function方法體中動態遞迴呼叫

function方法體中動態遞迴呼叫

下面的程式碼用到了遞迴,在方法體中重複呼叫自身。

//一個階乘
function count(num){
	if(num<=1){
return 1;
}
return num * count(num-1); 
}

alert(count(5)); // 5*4*3*2*1 = 120



假如在程式結構中,需要改變此方法的名稱count,不僅要改變呼叫方法count,還要改變方法體中的count。用到的地方越多,需要改動的也就越多。
所以在遞迴時應該使用argurments.callee()動態呼叫,提示程式碼的可維護性。

//動態獲取方法名
function count(num){
	if(num<=1){
	return 1;
	}
	return num * argurments.callee(num-1);  //這裡的argurments.callee 就代表該方法本身。即使改變方法名稱,方法體也不會受影響。
}

alert(count(5)); // 5*4*3*2*1 = 120