我只是在尝试一下Python和递归函数。
现在,我想编写一个函数,它将一个数字分成4个部分,直到它小于4。
因此,例如,我提供函数20,然后它应该返回。
[1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25,1.25]如果在return语句之前打印结果,则得到该结果,但如果返回包含这些值的变量,则无法获得该结果。
def break_up_number_into_fours(input):
flag = 0
input_list = []
full_result = []
if isinstance(input, list):
input_list.extend(input)
else:
input_list.append(input)
for item in input_list:
if item > 4:
result = [item/4]*4
full_result.extend(result)
flag = 1
else:
full_result.append(item)
if flag == 1:
break_up_number_into_fours(full_result)
else:
print(full_result)
return full_result
test = break_up_number_into_fours(20)
print(test)密码有什么问题吗?
太感激了!
发布于 2021-01-21 15:17:30
您没有从递归调用break_up_number_into_fours(full_result)返回任何值,您需要这样做:
def break_up_number_into_fours(input):
flag = 0
input_list = []
full_result = []
if isinstance(input, list):
input_list.extend(input)
else:
input_list.append(input)
for item in input_list:
if item > 4:
result = [item/4]*4
full_result.extend(result)
flag = 1
else:
full_result.append(item)
if flag == 1:
return break_up_number_into_fours(full_result) // here you need to return the value in respective recursive call
else:
print(full_result)
return full_result
test = break_up_number_into_fours(20)
print(test)输出:
[1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25]
[1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 1.25]https://stackoverflow.com/questions/65830304
复制相似问题