下面的第一个函数使用该语句实现阶乘函数的递归版本yield。
我试图将这yield from句话应用于此factorial(),以便进行实验和学习。因此,我编写了该factorial2()函数,尽管打印了正确的阶乘,但它没有打印所有以前的值,例如factorial().
factorial()我想知道是否有任何方法可以获得与中完全相同的功能factorial2()?
def factorial(n):
if n == 1:
yield 1
else:
for u in factorial(n - 1):
yield u
yield u * n
def factorial2(n):
if n == 1:
yield 1
else:
yield from (i * n for i in factorial2(n - 1))
def main():
for u in factorial(12):
print(u)
for a in factorial2(12):
print(a)
if __name__ == '__main__': main()
输出:
1
2
6
24
120
720
5040
40320
362880
3628800
39916800
479001600
479001600
预期输出:(与 相同factorial())
1
2
6
24
120
720
5040
40320
362880
3628800
39916800
479001600
1
2
6
24
120
720
5040
40320
362880
3628800
39916800
479001600
桃花长相依
慕尼黑5688855
相关分类