在比较while
和for
循环之后,我有一个问题,即while
循环如何跟踪它所在序列中的哪个计数。基本for
循环如下:
for (var i = 0; i < 5; i++) {
console.log(i);
}
因此,第一次运行时,i
等于0
,它满足i
小于5
的条件,因此它执行代码块。然后它增加变量i
,以便在下一个序列i
等于满足条件的1
,依此类推。
while
循环似乎没有存储该类信息的变量。这是我在网上找到的一段代码。
function factorial(n) {
var result = n;
while (n > 1) {
result = result * (n-1);
n--;
}
console.log(result);
}
factorial(3);
因此,在调用factorial(3)
后,结果等于3
,大于1
,因此代码执行,结果变为6
。在下一个序列中,n
等于2
,因此6
乘以2
减去1
为6
,因此最终输出为{{1} }。我的问题是为什么6
循环中没有像n
变量那样的i
变量?当循环递减for
时,为什么不是一遍又一遍地n
减去3
?
答案 0 :(得分:1)
你自己说:“当循环减少n。”
如果n == 3
并且您减去它,那么n
将等于2,依此类推,直到等于1,条件while (n > 1)
将评估为false
并且循环将停止。
答案 1 :(得分:1)
实际上Brian,有一个变量n,该函数将其作为参数。
n--逐个递减,这就是为什么它不会一遍又一遍地重复3 - 1。