这个双递归函数如何工作?

时间:2015-01-09 14:18:17

标签: python recursion

我试图理解这一点/以任何可能的方式将其可视化无济于事。

def f(s):
    if len(s) <= 1:
        return s
    return f(f(s[1:])) + s[0]

print f("mat")
print f("math")

输出:

atm
hatm

1 个答案:

答案 0 :(得分:2)

我会建议一种方法,而不是给你答案。每当您不确定代码在做什么时,请插入大量print语句以查看每个步骤中发生的情况。例如,

def f(s):
    print 'running f...'
    print 'input is',s
    if len(s) <= 1:
        print 's is <= 1'
        return s
    return f(f(s[1:])) + s[0]

在调试时,print语句是您最好的工具之一。