Search code examples
pythonrecursionreturn

How to not return nonType in this definition?


How can I return the value of total_square only when quasi_gen==0? If I put another return statement to the case where quasi_gen>0, then it always returns zero.

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])

Solution

  • Not sure what you're trying to do but first of all you should safe guard against quasi_gen < 0

    you also don't need to do all those useless resets, in short, try this:

    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))