0

我打算用这个函数递归地乘以两个数字。我意识到这很可能远非最佳。为什么我print rec_mult(15, 1111)对这个函数的调用是打印None而不是打印16665

def rec_mult(x, y, tot=0, inc=0):
    if int(x) ==  0:
        return tot
    else:
        x = str(x)
        tot += int(x[(-1+inc):]) * y
        x = x[:(-1+inc)] + "0"; inc -= 1
        rec_mult(x, y, tot, inc)
4

1 回答 1

5

return当递归调用你的函数时,你必须这样做,

def rec_mult(x, y, tot=0, inc=0):
    if int(x) ==  0:
        return tot
    else:
        x = str(x)
        tot += int(x[(-1+inc):]) * y
        x = x[:(-1+inc)] + "0"; inc -= 1
        return rec_mult(x, y, tot, inc)  # <-- return here

print rec_mult(2, 10)  # 20
于 2013-07-02T23:05:19.570 回答