不使用for语句的for循环

问题描述

我正在尝试编写一个程序,在其中打印 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)