有人可以解释一下如何做到无循环运行吗?

let x = prompt("Enter a first number to add:");
let y = prompt("Enter a second number to add:");
parseFloat(x);
parseFloat(y);

alert(peanoAddition(x, y));

function peanoAddition(x, y) {
  while (y !== 0) {
    if (y === 0) {
      return x;
    } else {
      x = x + 1;
      y = y - 1;
      return x;
    }
  }
}

最佳答案

更改为递归函数非常简单。您的终止条件将相同:if (y === 0) return x。否则,您只需使用peanoAdditionx的新参数再次调用y并返回结果。

然后,如果y不为0,则一次又一次调用该函数,直到y为0。

以下代码与您的代码完全相同。但是,它也存在相同的问题。例如,当您呼叫peanoAddition(5, -2)时会发生什么?您的代码和我的代码都将永远运行。

function peanoAddition(x, y) {
  if (y === 0) {
    return x;
  }
  return peanoAddition(x + 1, y - 1);
}

09-16 22:17