gpt4 book ai didi

javascript - ab 是一个数字,求 (a+b)^n = ab

转载 作者:行者123 更新时间:2023-12-03 04:14:48 27 4
gpt4 key购买 nike

假设我们有数字 81,我们将它分开:8 和 1。如果我们得到这个数字的总和,它将是 9,对吧?让我们检查一下 9 的任意幂是否为 81。是的,9 的平方为 81。

我想找到所有这些数字,直到达到 10000。我一直在编写这个代码,但有一些东西我总是被卡住。这是我的代码;

var results = [];
for (var num = 0; num < 82; num++) {
var splittedNumbersArray = num.toString(10).split("").map(Number);
var sum = splittedNumbersArray.reduce(sumof, 0);
var powersArray = [];
for (var power = 0; power < 11; power++) {
var powerNumber = Math.pow(sum, power);
powersArray.push(powerNumber);
}
if (controlSolution(powersArray, num) === true) {
results.push(num);
}
}

function sumof(a, b) {
return a + b;
}

function controlSolution(a, v) {
for (var index = 0; index < a.length; index++) {
if (a[index] === v) {
return true;
}
}
return false;
}

当我通过控制台调试代码时,它说变量num是82。但是for循环应该在81之后停止,对吧?我也查了一下,81之后就停止了?! (我理解这部分。)

为什么当我输入 console.log(sayi) 时显示 82?我认为这就是我的 kontrolet 功能不起作用的原因。

当我检查 powersArray 是否包含 num 时,我已经看到,它是。但为什么 results 没有数字 81?

我该如何解决这个问题?感谢您的回答。

最佳答案

But the for loop should stop after the 81, right? I check it too, it stops after the 81?!

确实如此。但是sayi 每次循环迭代后都会递增。那么当 sayi81 :

  1. 81 < 82为 true,因此循环执行
  2. 循环体运行
  3. 完成后,sayi增加到82 .
  4. 检查 for 循环条件 - 82 < 82为 false,因此循环终止并继续下一行。

如果您打印 sayi此时将是82 。但最后执行的循环使用的值是 81 ,如您所料。

这是正常行为。请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Loops_and_iteration#for_statement它描述了 for 循环的工作原理。请注意,最后步骤是

The update expression incrementExpression, if there is one, executes, and control returns to step 2.

第 2 步是评估条件。

关于javascript - ab 是一个数字,求 (a+b)^n = ab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44181577/

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