Python 3.x 反向字符串递归函数循环

Python 3.x 反向字符串递归函数循环,python-3.x,Python 3.x,这个递归函数的中断条件在哪里?为什么字符串中的字符不能进行无休止的反转呢 print('Enter your input:') n = input() def reverse(s): if len(s) == 0: return s else: return reverse(s[1:]) + s[0] print (reverse(n)) Enter your input: Something gnihtemoS 当字符串长度为0时,进行非

这个递归函数的中断条件在哪里?为什么字符串中的字符不能进行无休止的反转呢

print('Enter your input:')
n = input()

def reverse(s):
    if len(s) == 0:
        return s
    else:
        return reverse(s[1:]) + s[0]

print (reverse(n))

Enter your input:
Something
gnihtemoS

当字符串长度为0时,进行非递归返回,导致堆栈上的递归调用返回,直到到达其底部为止。

递归函数在满足以下两个属性时终止:

必须有一个不需要任何递归调用就能解决的基本情况,并且 每个递归调用必须在比以前更接近基本情况的输入上进行。 在这个递归函数中,基本情况是空字符串;它由返回s处理,而不进行任何递归调用。递归调用在字符串s[1:]上,该字符串比s短一个字符,因此它更接近空字符串。因此,函数满足这两个属性,因此它总是终止