为什么此函数返回“无”值?

时间:2020-07-26 11:34:14

标签: python python-3.x

我尝试为递归函数编写代码,该函数将x值作为输入参数并打印x位数严格递增的数字。例如x = 6给出输出67891011

l = []


def recfun(x):
    if x == 12:
        for i in range(0,len(l)):
            l[i] = str(l[i])
        print(l)
        return int("".join(l))
    else:
        l.append(x)
        x += 1
        recfun(x)


x = int(input('Enter a number: '))
y = recfun(x)
print(y)

我知道这不适用于除6之外的其他值。但是打印的返回值显示None

输入:

Enter a number: 6

输出:

['6', '7', '8', '9', '10', '11']
None

请提出一些克服此问题的方法。

3 个答案:

答案 0 :(得分:0)

您有if-else语句。如果条件失败,有可能在其他条件下返回其他位置,因此您还必须在该位置添加返回值!

l = []
def recfun(x):

    if x == 12:
        for i in range(0,len(l)):
            l[i] = str(l[i])
        print(l)
        ans = (int("".join(l)))
        return ans
    else:
        l.append(x)
        x+=1
        return recfun(x) #return here


x = int(input('Enter a number: '))
y = recfun(x)
print(y)

Enter a number: 3
['3', '4', '5', '6', '7', '8', '9', '10', '11']
34567891011

答案 1 :(得分:0)

由于您已将返回值分配给y,但是递归不返回任何值 在else语句中将recfun(x)替换为return recfun(x)

答案 2 :(得分:0)

您不返回该函数。

修改后的代码:

l = []
def recfun(x):

    if x == 12:
        for i in range(0,len(l)):
            l[i] = str(l[i])
        print(l)
        ans = (int("".join(l)))
        return ans
    else:
        l.append(x)  #comes here for the input 6
        x+=1
        return recfun(x)


x = int(input('Enter a number: '))
y = recfun(x)
print(y)