gpt4 book ai didi

python - 如何使用递归找到系列 1+ (1*2) + (1*2*3) … (1*2*3*…n) 的总和?

转载 作者:行者123 更新时间:2023-11-28 22:08:52 26 4
gpt4 key购买 nike

这就是我目前所拥有的,

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com