【问题标题】:why is the print() function prints none in this case为什么在这种情况下 print() 函数不打印
【发布时间】:2017-09-03 22:08:10
【问题描述】:

我一直在解决一个问题,我不明白为什么递归函数步骤返回 None?

这里是代码:

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, step 函数打印 None 以及 print 函数

【问题讨论】:

  • 在 steps 的 else 中,您没有返回任何内容。当你使用递归时,每个执行分支都必须返回一些东西。只需返回递归调用的结果。

标签: python-3.x recursion printing nonetype


【解决方案1】:

这可能是因为您没有返回递归调用。您在这里的预期输出是什么?当我将递归调用返回到步骤时,输入 123456 的值为 2。

【讨论】:

    猜你喜欢
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    相关资源
    最近更新 更多