gpt4 book ai didi

javascript - 带循环的最大公约数

转载 作者:行者123 更新时间:2023-12-02 22:40:40 25 4
gpt4 key购买 nike

我认为我的逻辑是错误的,但我不明白我在哪里犯了错误。我正在尝试找到大公约数,代码将确定如果 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 ,所以我会尝试为您指出几个问题的正确方向,而不是例如准确地告诉您代码应该说什么。

  • 在循环中,您永远不会更新 ab 的值。
  • 假设该问题已解决,您的代码将从 b 中多次减去 a,或者从 a 中减去 b > 很多次。这样做会计算一个数字除以另一个数字的余数,而不是计算最大公约数。
    • 我敢打赌,您已经了解了计算最大公约数的算法。再次通读它,将其功能与您的代码的功能进行比较。

这里有一个强大的方法来查找此类代码中的问题:尝试在你的脑海中运行它,假装你是计算机。一步一步地完成计算机会做的事情。对于上面的代码,它可能会这样开始:

  • 好的,我有名为 ab 的变量,其值分别为 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/

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