2017-10-04 2 views
0

Je suis censé obtenir ces résultats, les deux premières chaînes sont les s1 et s2 et le troisième est le résultat que je devrais obtenir. Le premier code est celui que j'ai écrit et le second est celui de l'enseignant.nouveau à la récursion, ne peut pas trouver la solution

“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 

réponse de l'enseignant

def 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 

def 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

Que sont supposés faire 'return (n + 1) et count_n (...)'? Comme 'n' commence à 0,' n + 1' aura toujours la valeur True, donc l'expression court-circuiera et la récursivité ne sera jamais appelée. –

+1

Pouvez-vous essayer de distiller une question technique spécifique sur ce sujet? Si vous déterminez exactement sur quelle base votre code est basé, cela ne tient pas, par exemple, cela permet une question plus spécifique et précise. Voir [Comment puis-je poser et répondre aux questions sur les devoirs?] (Https://meta.stackoverflow.com/a/334823/14122) - Bref, nous nous attendons à ce que les questions de devoirs soient conformes aux mêmes normes de qualité que toute autre question sur le site; ces standards incluent la spécificité, et appellent à fournir un code [mcve] qui peut être directement copié-collé par quelqu'un qui veut reproduire ou tester sa réponse. –

+0

Ok. Je dois rendre les caracthers interchangeables des deux cordes s'ils ont la même longueur ou s'ils ont une lettre commune dans la même position. sinon le code devrait renvoyer False. Désolé si je n'étais pas si clair que la question de l'enseignant est aussi déroutante. J'aurais aussi posté sa réponse –

Répondre

0

hey guys i trouvé une réponse, merci pour l'aide

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