gpt4 book ai didi

Javascript 递归函数柯里化(Currying)和箭头函数

转载 作者:行者123 更新时间:2023-12-05 01:23:40 24 4
gpt4 key购买 nike

这很好并且有效:

const power = (x,n) => {
if (n === 0) return 1;
return x * power(x, n - 1);
}

power(4,3)64

但是尝试这样做作为实验 - 不起作用给出 NaN不明白为什么:

node.editor// Entering editor mode (Ctrl+D to finish, Ctrl+C to cancel)

const power = x => {
return n => {
if (n === 0) return 1;
return x * power(x, n - 1);
}
}

let t = power(4)t(3)NaN

最佳答案

您尚未将柯里化(Currying)版本中的递归调用转换为柯里化(Currying)形式。 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

关于Javascript 递归函数柯里化(Currying)和箭头函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72049369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com