Python创建递归函数时遇到的问题

2024-09-30 06:13:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个函数 它的输入将是一个数字。 以及所需结果的长度

输出将是用户输入长度中的数字

例如,doMul(3,6)将输出:333333

现在我试着这样做:

def doMul(digit, count=1):
    if count == 0:
        return 1
    return digit + digit * (10 ** doMul(digit, count - 1))

但它似乎不起作用。 我不知道为什么。 值得一提的是,我不想使用任何字符串


Tags: 函数字符串用户returnifdefcount数字
3条回答
def doMul(n, m):
    "Return the decimal number that is nnn... m times."

    return n * ((10**m)-1) // 9

之所以这样做,是因为N的M个拷贝就是1的M个拷贝乘以N。由于(10**M)-1与doMul(9, m)相同,我们可以很容易地生成基数

如果您绝对需要递归解决方案:

def doMul(n, m):
    if m <= 1:
        return n
    return n + 10 * doMul(n, m-1)

这基本上是一样的,计算出比我们想要的少一个数字,乘以10,然后加上我们想要的数字

y ** x实际上是yx幂,而不是乘法。您应该删除它并返回digit,而不是1

def doMul(digit, count=1):
    if count == 1:
        return digit
    return digit + 10 * doMul(digit, count - 1)

这对你有用吗

def doMul(digit, count=1):
    if count == 1:
        return digit
    return str(digit) + str(doMul(digit, count-1))

print(doMul(3, 6))

相关问题 更多 >

    热门问题