0

有人可以解释如何在没有循环的情况下完成这项工作吗?

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;
    }
  }
}

4

1 回答 1

1

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

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

以下内容与您的代码完全相同。但是,它也保留了相同的问题。例如,当你打电话时会发生什么peanoAddition(5, -2)?您的代码和我的代码都将永远运行。

function peanoAddition(x, y) {
  if (y === 0) {
    return x;
  }
  return peanoAddition(x + 1, y - 1);
}
于 2019-10-19T22:42:36.583 回答