问题描述
我正在尝试编写一个程序,在其中打印 1 个循环的递减量,因此如果值为 3,则输出应为 3,2,1。但是我从这段代码中得到的输出是 3,1,0。有什么办法可以解决这个问题吗?
function loop(value) {
while(greaterThanZero(value) == true) {
printValue(value);
value = reduceOne(value);
console.log(value);
value--;
}
}
var value = 3;
var greaterThanZero = function (n) {
return n > 0;
}
var reduceOne = function (n) {
return n - 1;
}
var printValue = function (n) {
console.log(n)
}
解决方法
你在每次迭代中做同样的事情两次(记录和递减)。删除两个重复的语句,这样您就可以立即突破,而不是一次进行两次。
function loop(value) {
while(greaterThanZero(value) == true) {
console.log(value);
value--;
}
}
var greaterThanZero = function (n) {
return n > 0;
}
loop(3)
该函数似乎按预期工作,但由于此 0
,您会看到 console.log(value)
。它只是在递减后记录该值
var value = 3;
var greaterThanZero = function(n) {
return n > 0;
}
var reduceOne = function(n) {
return n - 1;
}
var printValue = function(n) {
console.log(n)
}
function loop(value) {
while (greaterThanZero(value) == true) {
printValue(value);
value = reduceOne(value);
//console.log(value);
//value--;
}
}
loop(value)