作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为我的逻辑是错误的,但我不明白我在哪里犯了错误。我正在尝试找到大公约数,代码将确定如果 a 大于 b 或 b 大于 a 时该怎么做。
我尝试了很多循环,if,while,但最终我删除了所有循环以清除视线。我制作了流程图,但它没有随我的代码一起提供。
var a = 64;
var b = 12;
var newA;
while(a > b && newA != 0){
newA = a - b;
if(newA === 0){
outputObj.innerHTML = outputObj.innerHTML + "GCD is " + b;
}
}
while(a < b && newA != 0){
newA = b - a;
}
if(newA === 0){
outputObj.innerHTML = outputObj.innerHTML + "GCD is " + a;
}
}
如果 a 为 64,b 为 12,则 GCD 为 4,如果 a 为 35,b 为 42,则 GCD 为 7
最佳答案
您遇到了一些不同的问题。这看起来像 homework ,所以我会尝试为您指出几个问题的正确方向,而不是例如准确地告诉您代码应该说什么。
a
或 b
的值。b
中多次减去 a
,或者从 a
中减去 b
> 很多次。这样做会计算一个数字除以另一个数字的余数,而不是计算最大公约数。
这里有一个强大的方法来查找此类代码中的问题:尝试在你的脑海中运行它,假装你是计算机。一步一步地完成计算机会做的事情。对于上面的代码,它可能会这样开始:
a
和 b
的变量,其值分别为 64 和 12。还有一个名为 newA
的变量,其值分别为 64 和 12。尚未指定值。a
是否大于 b
—— 是的,是 —— 然后检查 newA
是否为零。
newA
一个值。 (您在这里发现了一个错误。让我们假设它已修复并继续。)newA
设置为 a-b
,即 52。newA
是否为零,事实并非如此,因此我不需要在 if
block 内执行这些操作。while
循环的一次迭代。回到循环的开头。a
是否大于 b
—— 是的,是 —— 然后检查 newA
是否为零。
等等。
关于javascript - 带循环的最大公约数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58600514/
我是一名优秀的程序员,十分优秀!