小编fut*_*lei的帖子

双递归教育的例子

这个功能对我来说没有意义.我已经在所有地方添加了印刷语句,以弄清楚发生了什么,我仍然没有得到它.如果有人能向我解释,我将不胜感激.

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

print(f("mat"))
Run Code Online (Sandbox Code Playgroud)

这就是我看到的情况.所以我们从长度为3的字符串开始并绕过if语句.我们首先在内部f(s [1:])上工作.所以现在我们有一个长度为2("at")的字符串再次绕过if语句并输入f(s [1]),它给出了长度为1("t")的字符串,最后输入if语句并返回"T".对我来说,这条路很冷.

从我的print语句中,我看到创建了一个长度为2的新字符串,然后返回"a".最终产品最终成为"atm".由于"+ s [0]"部分我得到了"m"被标记,但为什么它是"atm"而不是"tam"?

我老老实实地花了几个小时,不能下雨.任何帮助,将不胜感激.

python recursion

5
推荐指数
2
解决办法
464
查看次数

标签 统计

python ×1

recursion ×1