为什么反向(字符串[0:])在python中显示错误,为什么我不能用它来代替反向(字符串[1:])+字符串[0]

2024-09-30 12:22:40 发布

您现在位置:Python中文网/ 问答频道 /正文

请解释一下,我听不懂 我尝试过以下代码:

def reverse(string):
        if len(string) == 0:
            return string
        else:
            return reverse(string[0:])
st = str(input("Enter the string to be reversed: "))
print(reverse(st))

以上代码给出的错误如下:

Enter the string to be reversed: samiksha
Traceback (most recent call last):
  File "C:\Users\samiksha warang\Desktop\python\lab exps\exp3.py", line 40, in <module>
    print(reverse(st))
  File "C:\Users\samiksha warang\Desktop\python\lab exps\exp3.py", line 38, in reverse
    return reverse(string[0:])
  File "C:\Users\samiksha warang\Desktop\python\lab exps\exp3.py", line 38, in reverse
    return reverse(string[0:])
  File "C:\Users\samiksha warang\Desktop\python\lab exps\exp3.py", line 38, in reverse
    return reverse(string[0:])
  [Previous line repeated 1021 more times]
  File "C:\Users\samiksha warang\Desktop\python\lab exps\exp3.py", line 35, in reverse
    if len(string) == 0:
RecursionError: maximum recursion depth exceeded while calling a Python object

Tags: inpystringreturnlinelabusersfile
1条回答
网友
1楼 · 发布于 2024-09-30 12:22:40

每个递归调用只是重复上一个调用:您并没有将任务缩减为更小的任务。因此,您有一个无限递归

考虑倒换字符串“abc”。在有效的形式中,递归步骤是

return reverse("bc") + 'a'

这将任务从3字符字符串减少到2字符字符串。下一个递归将是

return reverse("c") + b

。。。当与父调用结合时,最终将返回“cba”


失败版本的递归步骤为

return reverse("abc")

简言之,它使用完全相同的输入调用自己。因此,每次调用都会得到相同的(缺少)处理。输入字符串永远不会到达基本大小写

相关问题 更多 >

    热门问题