为什么在这种情况下print()函数不打印

问题描述:

我一直在处理一个问题我不明白为什么递归函数步骤返回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

这可能是因为你不回你的递归呼叫。这里您的预期产出是什么?当我将递归调用返回到步骤时,对于123456的输入,我得到2的值。