题解 | #阶乘#迭代器Symbol.iterator方法题解

阶乘

http://www.nowcoder.com/practice/39fcf876fab34fe8afc298de10a1e112

此方法性能虽然不如递归,但是也是一种解法。

function _factorial(number) {
  // 补全代码
  let range = {
    from: 1,
    to: number
  }
  
  range[Symbol.iterator] = function () {
    return {
      current: this.from,
      last: this.to,

      next() {
        if (this.current <= this.last) {
          return { done: false, value: this.current++ }
        } else {
          return { done: true}
        }
      }
    }
  }
  
  let sum = 1
  
  for (let key of range) {
    sum = sum * key
  }

  return sum
}
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务