通过递归替换简单的while循环

时间:2014-06-15 18:51:04

标签: python loops recursion while-loop

如果我有一个像

这样的简单函数(伪代码)
fun(a, b):
 x = a
 i = 0
 while i < b do
  x = x + a
  i ++
 return x

我可以通过递归替换此函数中的while loop吗?

3 个答案:

答案 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