2017-09-03 4 views
0

J'ai travaillé sur un problème Je ne comprends pas pourquoi l'étape de la fonction récursive renvoie None?Pourquoi la fonction print() n'en imprime aucune dans ce cas

Voici le code:

import sys 

def minIndx(list): 
    x=10 
    indx=0 
    for i in range(len(list)): 
     if (list[i]<x): 
      x=list[i] 
      indx=i 
    return indx 

def steps(arr,sum1,sum2,x): 
    i = minIndx(arr) 
    del arr[i] 
    sum1 = sum(arr) 
    if (sum1 + 9*x >= sum2): 
     return x 
    else: steps(arr,sum1,sum2,x+1) 

s=input() 
digits1=[] 
digits2=[] 
for i in range(len(s)): 
    if (i>2):break 
    digits1.append(int(s[i])) 
for i in range(len(s)): 
    if (i<3):continue 
    digits2.append(int(s[i])) 
sumLeft = sum(digits1) 
sumRight = sum(digits2) 
print(steps(digits1,sumLeft,sumRight,1)) 

pour le cas de test: 123456, la fonction imprime étape Aucun ainsi que la fonction d'impression

+1

Dans l'autre dans 'steps', vous ne renvoyez rien. Chaque branche d'exécution doit renvoyer quelque chose lorsque vous utilisez la récursivité. Renvoie juste le résultat de l'appel récursif. – Carcigenicate

Répondre

1

Il pourrait être parce que vous ne retournez pas votre récursive appel. Quelle est votre sortie attendue ici? Lorsque je renvoie l'appel récursif aux étapes, j'obtiens une valeur de 2 pour une entrée de 123456.