此递归函数的中断条件在哪里?为什么不对字符串进行无穷无尽的反转字符?
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 :(得分: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:]
短一个字符,因此它与空字符串“更接近”。因此,该函数同时满足这两个属性,因此始终会终止。