2017-09-03 102 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的值。

相關問題