【发布时间】:2016-09-07 19:23:16
【问题描述】:
我正在尝试了解 ES2015 中的生成器,并用它创建了一个递归阶乘函数。但它不起作用。我已经提到了关于该主题的现有问题,例如this,但它没有帮助。
function* fact (n) {
if (n < 2) {
yield 1;
} else {
yield* (n * fact(n-1));
}
}
let b = fact(5);
console.log(b.next());
谁能找到我在这里遗漏的任何明显问题?我在 JSFiddle 中使用它和 JavaScript-1.7 here
【问题讨论】:
-
好的。我认为这是错误的。让我更新一下
-
你没有返回任何东西..你说这是一个递归调用。
-
是的。使用
yield,您无需返回。参考:2ality.com/2013/06/iterators-generators.html -
他为什么要退货?
-
fact返回一个迭代器。您期望将数字与迭代器 (n * fact(n-1)) 相乘的结果是什么?
标签: javascript recursion ecmascript-6 generator