Javascript 在似乎无法避免的情况下,如何避免太多的递归错误

Javascript 在似乎无法避免的情况下,如何避免太多的递归错误,javascript,runtime-error,Javascript,Runtime Error,我必须减少我的文字墙,这意味着我无法解释代码是关于什么的。但问题是: 此代码生成满足某些要求和规范的分数。 这一需求导致大量调用函数CommonFactor,比如3000000或更多。我在max msp中使用了这个javascript代码,我可以生成分数,但是我无法避免关于许多递归调用的错误消息。 那我该怎么办?! var单位=0; var=0; var-minSubdivision=0; var分形n=0; var分形d=0; 函数公共因子(分子、分母){ 返回分母==0?分子:公共因子(分母

我必须减少我的文字墙,这意味着我无法解释代码是关于什么的。但问题是: 此代码生成满足某些要求和规范的分数。 这一需求导致大量调用函数CommonFactor,比如3000000或更多。我在max msp中使用了这个javascript代码,我可以生成分数,但是我无法避免关于许多递归调用的错误消息。 那我该怎么办?!
var单位=0;
var=0;
var-minSubdivision=0;
var分形n=0;
var分形d=0;
函数公共因子(分子、分母){
返回分母==0?分子:公共因子(分母,分子%分母);
}
函数长度(分钟,bpm){
单位=60*分钟*数学轮(bpm/60);
minSubdivision=2
最大细分=单位*10;
}
函数genrandSub(){
var random=Math.floor(Math.random()*(maxSubdivision-(minSubdivision-1))+(minSubdivision));
var unitD=单位;
var因子=公共因子(随机,单位D);
if(系数!=1&&random!=单位){
随机=随机/系数;
unitD=unitD/系数;

如果(随机大家好,我解决了问题,但我无法解释原因。我解决问题的方式在我看来是合乎逻辑的,但我希望有人能更好地评论和解释我。我想了解更多。 所以我以前的代码是:

函数genPattern(hwMany){
var subdivisionN=新数组();
var lengthD=新数组();
对于(变量i=0;i}
最好将问题的前半部分格式化为清晰的段落,并将代码缩减为a。要理解到底发生了什么,文本和代码的墙很难消化。您尝试过调试什么?例如,对于CommonFactor,您可以添加一个警报,显示各个级别的值,或者添加一个nesting/递归级别变量,并在级别达到(比如)25时中断,以查看是什么值导致它永远重复。查找“坏”值您可以编写一个测试函数,生成2个随机值,然后调用CommonFactor——让它运行直到触发警报。你好,Dave,我按照您的建议做了。因此,我创建了一个全局变量索引,以查看我使用index++在函数CommonFactor中调用了多少次。它打印了32683,有时甚至更多。函数Common Factor被其他函数使用,其中一个函数——genPattern——是递归函数,因为我意识到,有时,根据随机函数生成的分数,这个genPattern函数需要再次运行,因为它到达了一条死胡同。这就是为什么我在那里有一个while循环。