如果我有一个像
这样的简单函数(伪代码)fun(a, b):
x = a
i = 0
while i < b do
x = x + a
i ++
return x
我可以通过递归替换此函数中的while loop
吗?
答案 0 :(得分:0)
类似的东西:
fun (a, b, i):
if i >= b:
return 1
else:
return a + fun(a, b, i + 1)
答案 1 :(得分:0)
不使用额外参数,您可以尝试:
def f(a, b):
if b <= 1:
return a
else:
return a + f(a, b - 1)
注意:这仅适用于b >= 1
。
答案 2 :(得分:0)
def fun(x, y):
if y != 0:
for i in fun(x, y-1):
yield x + i
yield 0