Search code examples
pythonfactorial

Why does a change in multiplication sign in factorial to addition sign give such an output?


Question: Why is the output 11 not 12? i+4+i+3+i+2 = 1+4+1+3+1+2 = 12

Code:

def factorial(n):

    i = 1
    while n >= 1:
        #I changed the signs from * to + after getting the factorial from * method.

        i = i * n --> i = i + n
        n = n - 1
    return i

print factorial(4)

11

Solution

  • To get expected i+4 + i+3 + i+2 and result 12 you need

    def factorial(n):
    
        result = 0
    
        i = 1
        while n > 1:
            result += i + n
            n = n - 1
    
        return result
    
    print(factorial(4))
    

    I add to new variable result so I don't change i and it is 1 all the time.

    I also use > instead of >= so it ends after i+2 and it doesn't add i+1