我正在编写一个接受数字并返回其阶乘的函数。它有效,但是为什么必须在第二个for()语句的第一个参数上“ -1”呢?

var firstFactorial = function(num){
  var numBreakdown = [];
  var total = 1;
  for(var i = 1; i <= num; i++){
    numBreakdown.push(i);
  }
  for(var y = numBreakdown.length-1; y > 0; y--){
        total *= numBreakdown[y]
    }
  console.log(total);
  return total;
}
firstFactorial(7);

最佳答案

这是因为在数组中,最后一个元素的索引(位置)始终比长度小1。而且您必须从最后一个在length-1索引上的元素开始操作。

这是包含所有七个元素及其索引的数组。

                    numBreakdown=[1,2,3,4,5,6,7]
                                  | | | | | | |
                            index:0,1,2,3,4,5,6


您可以看到要访问元素7,必须使用numBreakdown [6]或numBreakdown [length-1],此处为length = 7或numBreakdown [y],其中y = length-1。

10-02 19:32