生成与12互质的3-9随机数遇代码错误,求修复方案
问题修复方案
我来帮你快速搞定代码里的问题,都是很容易修正的小细节:
核心错误分析
- 递归函数名写错:你在
gcdfunction里递归调用了gcd(),但你的函数实际叫gcdfunction,这就是控制台提示“gcd未定义”的直接原因。 - 函数调用语法错误:你调用生成随机数函数的写法有问题,不需要额外赋值(除非你要保存返回值,但你的函数是直接alert结果),而且括号的位置也不对。
修复后的完整代码
function gcdfunction(a, b) { var gcd; if (!b) { return a; } // 修复:递归调用正确的函数名gcdfunction return gcdfunction(b, a % b); }; function randomBetween(min, max) { var ceiling = max + 1; return Math.floor(Math.random() * (ceiling - min)) + min; } function GenerateRandomNumber3to9Excluding(min, max, b) { var random; var gcd; do { random = randomBetween(min, max); gcd = gcdfunction(random, b); } while(gcd > 1); alert(random); } // 修复:直接正确调用函数 GenerateRandomNumber3to9Excluding(3,9,12);
额外优化建议(可选)
- 可以把
gcdfunction的名字改成更简洁的gcd,这样递归调用的时候更直观,也不容易写错:
function gcd(a, b) { if (!b) { return a; } return gcd(b, a % b); };
然后在GenerateRandomNumber3to9Excluding里调用gcd(random, b)就可以了。
- 如果想让函数更健壮,可以在开头加参数校验,比如确保
min、max、b都是有效的正整数。
内容的提问来源于stack exchange,提问作者BlahBlahBloo
相关产品推荐
相关产品推荐

