我需要帮助解决循环问题。 这个问题与提出使用for循环获得一个结果的方法有关。所以,例如,我可以改变20,每次都会给我一个不同的结果。如果我将数字20改为4,结果应该是40320.我无法绕过逻辑来理解这一点。还有另一种方法来编写变量以使其更简单吗?作为初学者,我需要关于for循环的建议。
var number = 20;
var i, prevResult, newResult;
prevResult = 1;
for (i = 1; i <= number - 1; i++) {
// Calculate current result
newResult = prevResult * (i + 1);
// Set up the new result as the previous result
prevResult = newResult;
}
console.log("FINAL RESULT: " + prevResult);
感谢您阅读,我希望收到您的来信!
答案 0 :(得分:0)
有几个问题。
number - 1
中减去1是不一致的,稍后在循环体中添加它。 i = i + 1
可以写为i++
,增量运算符result = result * i
可以写成result *= i
i
仅在循环内使用,所以在循环内声明它。 这将您的代码简化为:
var number = 20, result = 1;
for (var i = 2; i <= number; i++)
{ // Calculate current result
result *= i;
}
console.log("FINAL RESULT: " + result);
答案 1 :(得分:0)
你的问题仍然有点不清楚,但是你提到你的问题是&#39;抽象的循环&#39;。好吧,这个for循环不是抽象的,而是具体的。你的缩进有点偏离,所以让我们从你的代码的适当缩进开始:
var number = 20;
var i, prevResult, newResult;
prevResult = 1;
for (i = 1; i <= number - 1; i++) {
newResult = prevResult * (i + 1);
prevResult = newResult;
}
console.log("FINAL RESULT: " + prevResult);
这里发生的是你首先声明一些变量供以后使用,其中包括number = 20
,后面将重复你的for循环的循环次数。实际for循环由三部分组成:
i = 1
- 使用i
作为循环计数器,然后从1开始i <= number - 1
- 只要i
小于或等于number - 1 = 20 -1 = 19
,就不断重复循环。请注意,这可以更容易地写为i < number
i++
- 在每个循环结束时,使用一个i
循环中的代码执行以下操作:
i = 1
newResult
设为prevResult * (i + 1) = 1 * (1+1) = 2
prevResult
设置为此新计算的值,即2
i
已递增,因此i = 2
:
newResult
设为prevResult * (i + 1) = 2 * (2+1) = 6
prevResult
设置为新计算的值,即6
i = 3
提供newResult = 6 * (3+1) = 24
i = 4
提供newResult = 24 * (4+1) = 120
i = 19
时,循环执行以下操作:
newResult
设为prevResult * (i + 1) = 121645100408832000 * (19 + 1) = 2432902008176640000
prevResult = 2432902008176640000
i
,i = 20
,但现在它会根据结束条件进行检查,并且20不小于或等于10,所以它停止执行循环,并且您的代码打印出20!
因此,您的代码实际上正在运行,将number = 20
更改为number = 4
或类似代码会将其更改为计算4!
而不是20!
。所以问题仍然存在,对于这次执行,你有什么不清楚和抽象的东西?