gpt4 book ai didi

javascript - 三元条件求expmod?

转载 作者:行者123 更新时间:2023-12-04 02:29:41 24 4
gpt4 key购买 nike

我正在阅读 SICP in JS关于三元条件的非终止示例:

function is_even(n) {
return n % 2 === 0;
}

function expmod(base, exp, m) {
const half_exp = expmod(base, exp / 2, m);
return exp === 0 ? 1
: is_even(exp) ? half_exp * half_exp % m
: base * expmod(base, exp - 1, m) % m;
}

console.log(expmod(4, 3, 5))

它解释说:

This would make the function not just inefficient, but actuallynon-terminating! The problem is that the constant declaration appearsoutside the conditional expression, which means that it is executedeven when the base case exp === 0 is met.

我只是不明白它的想法,当 exp === 0 时,它以 1 终止,但为什么要执行 half_exp?

最佳答案

您在执行的第一行进行递归调用,无论如何。这意味着该函数是非终止的,也就是无限循环。

function expmod(base, exp, m) {
const half_exp = expmod(base, exp / 2, m); // <- recursive call
// code ...
}

递归调用应始终与某种检查配对以确保存在退出点。

关于javascript - 三元条件求expmod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65046009/

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