0
我应该得到这些结果,前两个字符串是s1和s2,第三个是我应该得到的结果。 第一个代码是我写的,第二个是老师的。新递归,找不到解决方案
“Maria” e “Norma”: Mnao |
“Mai” e “Nor”: Mnaoir |
“Maria” e “Noa”:False |
“Mar” e “Noa”: MNaora |
“Mar” e “Noar”: False
def strin(s1,s2):
count_n(s1,s2)
if len(s1)==len(s2) or s1[n]==s2[n]:
if s1[0]==s2[0]:
return ""
else:
return s1[0]+s2[0]+strin(s1[1:],s2[1:])
else:
return False
def count_n(s1,s2):
global n
n=0
if len(s1)==len(s2) and (len(s1)>0 or len(s2)>0):
if s1[0]==s2[0]:
return n
else:
return (n+1) and count_n(s1[1:],s2[1:])
else:
return n
老师的回答
高清intercala(S1,S2):
if s1=='' and s2 == '':
return ''
if s1=='' or s2 =='':
return False
if s1[0] == s2[0]:
return ''
resp= intercala(s1[1:], s2[1:])
if resp != False:
return s1[0]+s2[0]+resp
else:
return resp
高清intercala2(S1,S2):
if s1=='' and s2 == '':
return ''
if s1=='' or s2 =='':
return False
if s1[-1] == s2[-1]:
return intercala2(s1[0:-1],s2[0:-1])
resp= intercala(s1[0:-1], s2[0:-1])
if resp != False:
return resp + s1[-1]+s2[-1]
else:
return resp
'return(n + 1)and count_n(...)'应该做什么?由于'n'从0开始,'n + 1'将始终为真,因此表达式将短路并且递归永远不会被调用。 –
你能尝试从中提炼出一个特定的技术问题吗?例如,如果您确切知道您的代码基于哪种假设不成立,则可以提供更具体和更精确的问题。请参阅[我如何问及回答作业问题?](https://meta.stackoverflow.com/a/334823/14122) - 简而言之,我们预计作业问题与其他任何问题一样符合相同的质量标准网站;这些标准包括特异性,并要求提供[mcve] - 可以由想要复制或测试其答案的人直接复制和粘贴的代码。 –
好的。如果两个琴弦的长度相同或在同一位置有共同字母,我必须从两个琴弦中返回可互换的琴弦。如果不是,代码应该返回False。对不起,如果我不那么清楚,那么老师的问题也会让人困惑。 Iwill也发布他的回答 –