這很好并且有效:
const power = (x,n) => {
if (n === 0) return 1;
return x * power(x, n - 1);
}
功率(4,3)64
但是嘗試將其作為實驗進行-不起作用會給 NaN 不明白為什么:
node .editor // 進入編輯器模式(Ctrl D結束,Ctrl C取消)
const power = x => {
return n => {
if (n === 0) return 1;
return x * power(x, n - 1);
}
}
讓 t = power(4) t(3) NaN
uj5u.com熱心網友回復:
您尚未將 curried 版本中的遞回呼叫轉換為 curried 形式。power(x, n - 1)本質上與power(x)因為只接受一個引數是相同的,這是一個函式,所以當你嘗試將它乘以一個數字時power不會不合理地變為。NaN
改寫如下:
const power = x => {
return n => {
if (n === 0) return 1;
return x * power(x)(n - 1);
}
};
console.log('4^3 = ', power(4)(3)); // 64
console.log('2^10 = ', power(2)(10)); // 1024
console.log('5^4 = ', power(5)(4)); // 625
console.log('3^4 = ', power(3)(4)); // 81
uj5u.com熱心網友回復:
您可以存盤嵌套函式并回傳該函式,然后將此函式用于另一個呼叫,僅更改n.
const
power = x => {
const
fn = n => n === 0
? 1
: x * fn(n - 1);
return fn;
};
console.log(power(4)(3));
uj5u.com熱心網友回復:
當我們討論“奇怪”的函式形式時,我不妨貢獻我的兩美分:
您還可以像這樣將 curried 函式作為單線執行:
const power = (x,pow) => pow = n => --n ? x*pow(n) : x;
console.log(power(3)(4)); // 81
當然,這是他們頭腦正常的人永遠不會做的事情。仍然 - 它有效!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/466841.html
標籤:javascript
