我尝试为递归函数编写代码,该函数将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
请提出一些克服此问题的方法。
答案 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)