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”直到它变为零。当它发生时,我返回利息的值,即总平方。