Javascript 试图生成一个与另一个大于1的数字(包括代码)不共享公因数的数字
(更新:现已修复!正在工作的JSFIDLE:) 我试图生成一个介于3和9之间的随机数,它与12没有任何相同的因子:Javascript 试图生成一个与另一个大于1的数字(包括代码)不共享公因数的数字,javascript,jquery,variables,Javascript,Jquery,Variables,(更新:现已修复!正在工作的JSFIDLE:) 我试图生成一个介于3和9之间的随机数,它与12没有任何相同的因子: function gcdfunction(a, b) { // THIS FUNCTION GENERATES THE GREATEST COMMON DIVISOR BUT I'M GETTING A CONSOLE ERROR THAT { IS AN UNEXPECTED TOKEN var gcd; if ( ! b) { return
function gcdfunction(a, b) { // THIS FUNCTION GENERATES THE GREATEST COMMON DIVISOR BUT I'M GETTING A CONSOLE ERROR THAT { IS AN UNEXPECTED TOKEN
var gcd;
if ( ! b) {
return a;
}
return gcd(b, a % b); // I'M ALSO GETTING AN ERROR THAT THIS IS UNDEFINED
};
function randomBetween (min, max) { //THIS FUNCTION GENERATES A RANDOM NUMBER BETWEEN A GIVEN 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); // THIS IS INTENDED TO CALL THE GCDFUNCTION DEFINED ABOVE
} while((gcd > 1)); // IF THE GCD > 1, IT GENERATES ANOTHER RANDOM NUMBER
alert(random);
}
var generaterandomnumber3至9no2=generaterandomnumber3至9inclusive
(3,9,12)
以下是链接:
我觉得有一个我没有看到的快速解决方案;任何建议都将不胜感激。谢谢 您的问题在于递归:gcd是第2行声明的未定义变量,您可能想调用函数gcdfunction 这是你的新密码
function gcdfunction(a, b) { // THIS FUNCTION GENERATES THE GREATEST COMMON DIVISOR BUT I'M GETTING A CONSOLE ERROR THAT { IS AN UNEXPECTED TOKEN
var gcd;
if ( ! b) {
return a;
}
return gcdfunction(b, a % b); // I'M ALSO GETTING AN ERROR THAT THIS IS UNDEFINED
};
function randomBetween (min, max) { //THIS FUNCTION GENERATES A RANDOM NUMBER BETWEEN A GIVEN 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); // THIS IS INTENDED TO CALL THE GCDFUNCTION DEFINED ABOVE
} while((gcd > 1)); // IF THE GCD > 1, IT GENERATES ANOTHER RANDOM NUMBER
alert(random);
}
“我还得到一个错误,这是未定义的”,这是因为它是未定义的,因为您将它声明为
var gcd代码>并且没有为其设置任何值。因此您正在尝试生成5
或7
?只要做Math.random()<0.5?5:7
。我该如何修改它?我刚刚添加了vargcd代码>以查看它是否可以解决未定义的错误。你介意推荐我如何解决这个问题吗?很明显,这里没有。用这样的例子来学习。@Paulpro不,我必须这样做,因为我要对其他各种数字重复使用它。调用gcd不是一个函数,您可能是指第7行的gcdfunction()