Python 如何在此定义中不返回非类型?

Python 如何在此定义中不返回非类型?,python,recursion,return,Python,Recursion,Return,只有当quasi\u gen==0时,我如何才能返回total\u square的值?如果我将另一个返回语句放在quasi\u gen>0的情况下,那么它总是返回0 def count_boxes(quasi_gen, initial_list): total_square=0 new_list=[] new_list=[box * 2 for box in initial_list] concatenate_list=initial_list+new_list

只有当
quasi\u gen==0时,我如何才能返回
total\u square
的值?
如果我将另一个返回语句放在
quasi\u gen>0
的情况下,那么它总是返回
0

def count_boxes(quasi_gen, initial_list):

    total_square=0
    new_list=[]
    new_list=[box * 2 for box in initial_list]
    concatenate_list=initial_list+new_list

    if quasi_gen>0:
        quasi_gen-=1
        count_boxes(quasi_gen, concatenate_list)
    elif quasi_gen==0:
        total_square=(sum(elem for elem in concatenate_list))
        return(total_square)

count_boxes(4, [2,2])

您必须在第一个
if/else
分支上调用
return

if quasi_gen>0:
    quasi_gen-=1
    return count_boxes(quasi_gen, concatenate_list)

这样,您将返回递归调用的结果。

您必须在第一个
if/else
分支上调用
return

if quasi_gen>0:
    quasi_gen-=1
    return count_boxes(quasi_gen, concatenate_list)

这样,您将返回递归调用的结果。

不确定您试图执行的操作,但首先您应该防止出现类生成<0

您也不需要执行所有这些无用的重置,简言之,请尝试以下方法:

def count_boxes(quasi_gen, initial_list):

concatenate_list=initial_list + [box * 2 for box in initial_list]

if quasi_gen < 0:
    return 0  # ?
if quasi_gen > 0:
    return count_boxes(quasi_gen - 1, concatenate_list)
return(sum(elem for elem in concatenate_list))
def计数框(准gen,初始列表):
串联_列表=初始_列表+[框*2表示初始_列表中的框]
如果准_gen<0:
返回0#?
如果准根>0:
返回计数框(准第1代,串联列表)
返回(总和(串联列表中元素的元素)

不确定你想做什么,但首先你应该警惕准基因<0

您也不需要执行所有这些无用的重置,简言之,请尝试以下方法:

def count_boxes(quasi_gen, initial_list):

concatenate_list=initial_list + [box * 2 for box in initial_list]

if quasi_gen < 0:
    return 0  # ?
if quasi_gen > 0:
    return count_boxes(quasi_gen - 1, concatenate_list)
return(sum(elem for elem in concatenate_list))
def计数框(准gen,初始列表):
串联_列表=初始_列表+[框*2表示初始_列表中的框]
如果准_gen<0:
返回0#?
如果准根>0:
返回计数框(准第1代,串联列表)
返回(总和(串联列表中元素的元素)

写下你的预期输出你把
返回放在哪里了?回顾递归是如何工作的,并思考当
quasi_gen>0
预期返回972时应该返回什么。如果我将return改为print,它会打印,但它不是类型。在这种情况下,我不想返回任何内容:quasi_gen>0。我只是不断减少“gen”直到它变为零。当它返回时,我返回感兴趣的值,即总平方。写下你的预期输出你把
返回放在哪里了?回顾递归是如何工作的,并思考当
quasi_gen>0
预期返回972时应该返回什么。如果我将return改为print,它会打印,但它不是类型。在这种情况下,我不想返回任何内容:quasi_gen>0。我只是不断减少“gen”直到它变为零。当它发生时,我返回利息的值,即总平方。