计算GCD功能无法正常工作

问题描述 投票:0回答:1

[当我显示image_width和image_height时,它显示image_width和image_height,但是当我显示image_weight2和image_height2时,它显示NaN而不是正确的结果。

我知道在计算GCD时已经有很多问题,但是在这里我的问题是为什么它显示NaN而不是数字结果。

calculateGCD = (width, height) => {
    const image_width = width;
    const image_height = height;

    const gcd =
      image_height == 0
        ? image_width
        : this.calculateGCD(image_height, image_width % image_height);

    const image_width2 = image_width / gcd;
    const image_height2 = image_height / gcd;

    const aspect_ratio = `${image_width2} : ${image_height2}`;

    return aspect_ratio;
  };

console.log(calculateGCD(1200,627));
javascript
1个回答
0
投票

正如我在这里看到的,该函数将NAN : NAN作为字符串返回,这是由于您正在创建的递归而导致的,因此可以找到GCD来创建递归,但是如果您在函数外计算纵横比另外,当您获得GCD值时,由于递归堆栈,该函数执行了很多次,并且每次gcd的值都发生变化。否则,您可以通过此方法清除我,例如为什么要在calculateGCD函数中计算宽高比。

或者如果我正确,那么您应该像这样尝试

    const calculateGCD = (number1, number2) => {
    let gcd =
      number2 == 0
        ? number1
        : calculateGCD(number2, number1 % number2);

    return Promise.resolve(gcd);
  };

  getAspectRatio = (image_width , image_height) => {

      calculateGCD(image_width , image_height).then((gcd) => {
        const image_width2 = image_width / gcd;
        const image_height2 = image_height / gcd;

        const aspect_ratio = image_width2 +" : "+image_height2;
        console.log(aspect_ratio);

      }).catch((err) => {
        console.log(err);
      });   
  }

getAspectRation(1200,627);
© www.soinside.com 2019 - 2024. All rights reserved.