def mirror(s,s2):
new=""
if s=="":
return s
new = mirror(s[1:],s2) +s[0]
if len(new)==len(s2):
if new==s2:
return True
else:
return False
def main():
print(mirror("dcba","abcd"))
main()
def mirror(s1, s2):
if not s1 or not s2: # base case
return not s1 and not s2 # if both empty, success!
if s1[0] != s2[-1]: # compare opposite ends
return False
return mirror(s1[1:], s2[:-1]) # recurse on remaining strings
如果您像下面这样构造递归函数,您应该会发现一些成功
其思想是通过字符串递归,首先检查结束条件。这可能是一个空字符串或类似的东西。然后检查反射条件是否仍然有效。如果是,则继续递归,否则返回
false
。当您返回false
时,它将一直传播到初始调用。同样,如果您达到结束条件,并且它返回true,这意味着您查看了整个字符串,它们满足了反射要求,true
将传播不熟悉递归的程序员往往会使问题变得更加困难,并且不相信递归能为他们完成工作。为了使这个问题在递归方面有意义,您需要检查每个字符串中的一个字符,然后决定将它们声明为不同的,或者对字符串执行相同的递归操作,直到用完字符(基本大小写)。类似于:
相关问题 更多 >
编程相关推荐