反向字符串递归函数循环

时间:2019-11-15 03:12:48

标签: 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

2 个答案:

答案 0 :(得分:1)

当String的长度为0时,您将进行非递归返回,从而导致堆栈上的递归调用返回,直到完全到达它们的底部为止。

答案 1 :(得分:0)

如果递归函数满足以下两个属性,则终止:

  • 必须有一个无需任何递归调用即可解决的“基本情况”,并且
  • 每个递归调用必须位于比基本情况“近”的输入上。

在此递归函数中,基本情况是空字符串;它由import numpy as np H = np.random.randn(4,4,16) + 1j * np.random.randn(4,4,16) S = np.random.randn(16,) + 1j * np.random.randn(16,) y = np.zeros((4,4,16),dtype=complex) for ij in range(16): y[:,:,ij] = np.reshape(h[:,:,ij]@S.reshape(4,4),16,1) 处理,没有进行任何递归调用。递归调用位于字符串return s上,该字符串比s[1:]短一个字符,因此它与空字符串“更接近”。因此,该函数同时满足这两个属性,因此始终会终止。