def josephus(args,number):#传入列表和数字
tidailiebiao=[i for i in args]#为了多次调用,使用替代列表
print(tidailiebiao)
if(len(tidailiebiao)<number):#递归结束条件
#print(tidailiebiao)
#print(len(tidailiebiao))
return tidailiebiao#返回值
else:
delete_people=tidailiebiao.pop(number-1)#删除元素
print("remove:%d"%delete_people)
tidailiebiao=tidailiebiao[number-1:]+tidailiebiao[:number-1]#生成新列表
josephus(tidailiebiao,number)#递归
test=[i for i in range(1,42)]
print(test)
print(josephus(test,3))#测试
最后的返回值为none
尝试解决方案,将函数的返回值重新复制给一个新列表,返回新列表,不能解决问题
在函数中加入代码测试发现,当达到返回条件时,返回值不为空
求帮助,多谢各位了
加个 return就行了
def josephus(args, number): # 传入列表和数字
tidailiebiao = args # 为了多次调用,使用替代列表
print(tidailiebiao)
if len(tidailiebiao) < number: # 递归结束条件
return tidailiebiao # 返回值
else:
delete_people = tidailiebiao.pop(number-1) # 删除元素
print("remove:%d" % delete_people)
tidailiebiao = tidailiebiao[number-1:]+tidailiebiao[:number-1] # 生成新列表
return josephus(tidailiebiao, number) # 递归
test = [i for i in range(1, 42)]
print(test)
print(josephus(test, 3)) # 测试