这是一个简单的递归函数问题,它从正数中提取每个数字。正如评论所提到的,我知道错误是由于全局变量引起的,但是我仍然不知道要修正它以获得预期的结果。谢谢。
def getdigits(n):
if n == 0:
return list_1[::-1]
list_1.append(n % 10)
return getdigits(int(n / 10))
list_1 = []
print(getdigits(120)) # output = [1,2,0]
print(getdigits(5)) # output = [5,1,2,0]
但是预期的输出应该是
print(getdigits(120)) # expected output = [1,2,0]
print(getdigits(5)) # expected output = [5]
答案 0 :(得分:0)
您正在使用现有的列表,该列表已经具有上一个函数调用中的值。
首先清除列表,然后尝试调用另一个值。\
尝试
def getdigits(n):
if n == 0:
return list_1[::-1]
list_1.append(n % 10)
return getdigits(int(n / 10))
list_1 = []
print(getdigits(120))
list_1.clear() #clear list values
print(getdigits(5))
答案 1 :(得分:0)
def getdigits(n):
global list_1
if n == 0:
listTemp = list_1
list_1 = []
return listTemp
list_1.append(n % 10)
return getdigits(int(n / 10))
list_1 = []
print(getdigits(120)) # output = [1,2,0]
print(getdigits(5)) # output = [5]
您需要在函数内将列表1声明为全局变量,以便可以在函数内清除列表1
我已经对其进行了测试并获得了输出