如何跟踪/理解给定JavaScript源代码的算法?[已关闭]

20jt8wwn  于 2023-02-02  发布在  Java
关注(0)|答案(2)|浏览(100)
    • 已关闭**。此问题需要超过focused。当前不接受答案。
    • 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

13小时前关门了。
Improve this question
我正在尝试获得一些JavaScript知识,我发现了这个代码挑战和它的解决方案,但我不太理解的解决方案。我想得到一个解释。

    • 问题所在**

2520是能被1到10中的每一个数整除而不带余数的最小数。能被1到n中的所有数整除的最小正数是多少?(smallestMult(5) * 应返回60 *)

    • 解决方案**
function smallestMulT(num) {
  let res = 0;
  let i = 1;
  let found = false;
  while (found === false) {
    res += num;
    while (res % i === 0 && i <= num) {
      if (i === num) {
        found = true;
      }
      i++;
    }
    i = 1;
  }
  return res;
}

解决方案是有效的,我只是想了解它是如何工作的。例如,为什么有必要在while循环中重复i = 1;

2jcobegt

2jcobegt1#

这是因为该函数检查1和x(num)之间的每个数字是否可被该数字整除。
所以当你输入5的时候它基本上是这样的:

  • 它检查1是否可被1(i)整除
  • 它检查1是否能被2整除(i)
  • 它检查1是否能被3整除(i)
  • 它检查1是否能被4整除(i)
  • 它检查1是否能被5整除(i)
  • 将i设置回1
  • 检查下一个号码
  • 它检查2是否能被1整除(i)
  • 等等...
function smallestMulT (num){
  let res = 0;
  let i = 1;
  let found = false;
  while (found === false) {
  res += num;
  while (res % i === 0 && i <= num) {
     if (i === num) {
        found = true;
     };
     i++;
  };
    i = 1;
  };
  return res;
};

console.log(smallestMulT(5));
myzjeezk

myzjeezk2#

因为在每一步中,它都要检查这个数是否能被所有小于num的数整除。如果不做i = 1,这个数将保持大于1的数,因此它将不是您想要的匹配。

相关问题