josephus问题递归求解,函数返回值问题,返回值为none?

josephus问题递归求解,函数返回值问题

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))        # 测试