【发布时间】:2021-09-22 23:16:57
【问题描述】:
我正在尝试在 python 中编写一些递归。我想计算 A+b-A*B 并通过列表中的所有元素继续计算它。代码运行得比我预期的要多。我认为两个 0.5+add() 打印来自 0.4+add() 案例,因为它在表达式中有两个 add([0.5, 0.2]) 。如果我错了,请纠正我。但基本案例印刷最让我困惑。我不明白为什么它有 4 个。如果有人能解释这 4 个基数的来源和执行顺序,那就太好了。
这是我在这里的第一个问题。谢谢!
代码:
lst= [0.4,0.5,0.2]
def add(l):
if len(l) == 1:
print('base call:', l[0])
return l[0]
else:
print('{zero}+add({one})-{zero}*add({one})'.format(zero=l[0], one=l[1:]))
return l[0]+add(l[1:])-l[0]*add(l[1:])
print('result of add: ', add(lst))
壳牌:
0.4+add([0.5, 0.2])-0.4*add([0.5, 0.2])
0.5+add([0.2])-0.5*add([0.2])
base call: 0.2
base call: 0.2
0.5+add([0.2])-0.5*add([0.2])
base call: 0.2
base call: 0.2
result of add: 0.76
【问题讨论】:
标签: python recursion functional-programming