2017-10-04 161 views
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 
+0

'return(n + 1)and count_n(...)'應該做什麼?由於'n'從0開始,'n + 1'將始終爲真,因此表達式將短路並且遞歸永遠不會被調用。 –

+1

你能嘗試從中提煉出一個特定的技術問題嗎?例如,如果您確切知道您的代碼基於哪種假設不成立,則可以提供更具體和更精確的問題。請參閱[我如何問及回答作業問題?](https://meta.stackoverflow.com/a/334823/14122) - 簡而言之,我們預計作業問題與其他任何問題一樣符合相同的質量標準網站;這些標準包括特異性,並要求提供[mcve] - 可以由想要複製或測試其答案的人直接複製和粘貼的代碼。 –

+0

好的。如果兩個琴絃的長度相同或在同一位置有共同字母,我必須從兩個琴絃中返回可互換的琴絃。如果不是,代碼應該返回False。對不起,如果我不那麼清楚,那麼老師的問題也會讓人困惑。 Iwill也發佈他的回答 –

回答

0

嘿,夥計們,我發現一個答案,謝謝你的幫助

def recur(s1,s2): 
if len(s1)==len(s2): 
    if s1[0]==s2[0]: 
     return "" 
    if len(s1)==1 or len(s2)==1: 
     return s1[0]+s2[0] 
    else: 
     return s1[0]+s2[0]+recur(s1[1:],s2[1:]) 
else: 
    return False