为什么函数不返回值而是打印相同的值?

时间:2019-03-03 14:10:21

标签: python python-3.x function return

请参阅此功能:-

def beej(v):
    v = sum(map(int, list(str(v))))
    if len(str(v)) <=1:
        print("printed: {}".format(v))  
        return v
    beej(v)

#outputs
>>> beej(23)
printed: 5
5                # returned
>>> beej(4221)
printed: 9
9                # returned
>>> beej(422199)
printed: 9       #no returned value
>>> beej(999)
printed: 9       #no returned value

所以;它只是为了某些价值而工作;而不是为了别人。我想知道这背后的原因;以及如何找到这些隐藏的错误。

1 个答案:

答案 0 :(得分:1)

您在递归调用中缺少return语句:

def beej(v):
    v = sum(map(int, list(str(v))))
    if len(str(v)) <= 1:
        print("printed: {}".format(v))  
        return v
    return beej(v)

如果对v的第一次调用(即没有递归调用)产生一位数的总和,那么您当前的代码只会返回beej