2017-09-03 21 views
0

私は問題に取り組んできましたが、なぜ再帰関数のステップがNoneを返すのか分かりません。こここの場合print()関数は何も印刷されません

はコードです:テストケースのため

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)) 

:123456、 ステップ関数はなしだけでなく、印刷機能

+1

'steps'のelseでは、何も戻していません。再帰を使用しているときは、実行のすべてのブランチが何かを返す必要があります。再帰呼び出しの結果を返します。 – Carcigenicate

答えて

1

を印刷していない、あなたの再帰を返していないので、それは可能性がありコール。ここに期待される成果は?再帰呼び出しをステップに戻すと、123456の入力に対して2の値が得られます。

関連する問題