如何使用递归查找数字中的最小数字 [Python]

0 python recursion

我有一个获取数字并应返回最小数字的函数。这就是我试图做的,但也许我没有完全理解递归是如何工作的。

def min_dig(num):
    minimum = 9
    if num < 10:
        return num
    min_dig(num / 10)
    if num % 10 < minimum:
        minimum = num % 10
    return minimum


print(min_dig(98918))
Run Code Online (Sandbox Code Playgroud)

输出是 8,但应该是 1。

小智 7

我认为递归尝试做的事情是这样的:

def min_dig(num):
    if num < 10:
        return num
    return min(num % 10, min_dig(num // 10))

print(min_dig(98918))
Run Code Online (Sandbox Code Playgroud)

如果数字小于10,那么它的最小位数就是它本身。如果数字大于10,我们只比较它的最后一位数字和除最后一位数字之外的所有数字组成的数字的最小数字,并返回较小的数字。