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短一个字符,因此它更接近空字符串。因此,函数满足这两个属性,因此它总是终止