这就是我目前所拥有的,
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
要计算阶乘,但如何添加总和?
最佳答案
@DarryIG 和@bkbb 的答案可行但效率低下,因为它会使用相同的数字重复递归调用,结果相同,一遍又一遍地获取更高的数字。您可以缓存结果以提高效率。
此外,由于:
sum_factorials(n) = (sum_factorials(n-1) - sum_factorials(n-2)) * n + sum_factorials(n-1)
你实际上不需要两个函数来实现递归:
def sum_factorials(n, cache=[0, 1]):
if len(cache) > n:
return cache[n]
previous = sum_factorials(n - 1)
cache.append((previous - sum_factorials(n - 2)) * n + previous)
return cache[n]
因此 sum_factorials(4)
返回:
33
关于python - 如何使用递归找到系列 1+ (1*2) + (1*2*3) … (1*2*3*…n) 的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58071320/