【发布时间】:2023-03-14 08:12:01
【问题描述】:
我试图通过存储数学系列的每个步骤来获取递归定义的函数列表:
x^0+x^1+x^2+x^3+... → f0(x)=1, f1(x)=1+x, f2(x)=1+x+x², f3(x)=1+x+x²+x³, ...
我在 python 中编写了这个代码:
n = 3
devs = [lambda x: 1]
for k in range(n):
devs.append(lambda x, f=devs[k]: f(x) + x**(k+1))
print(devs[-1](4)) # x=4
我在this answer 中了解到,您需要将前一个函数作为默认参数传递以解决最大递归深度错误,但这会输出193。
我认为这与默认参数中的k 有关。似乎计算:1+4^3+4^3+4^3=193,或者更准确地说是1+n*x^n而不是x^0+x^1+...+x^n
你能告诉我我在这里做错了什么吗?
【问题讨论】:
标签: python recursion math lambda