简体   繁体   中英

Recursion in Python (factorial function)

I hope this is not too much of a stupid question, but why does the 'return 1' statement in this Python code return the factorial of a number? This also happens for 'return True', which I understand is equivalent to 'return 1'

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

n == 0 is the base case of the recursive function. Factorial of 0 is 1: reference

Once the base case returns 1, the statement return n * factorial(n-1) will have the form: return n * 1 and so on.

in python when you multiply a number by True it will operate like you are multiply by One, and when you multiply a number by False it will operate like when you multiply by Zero.

so this is why you get a factorial af a number even if you use:

return True

instead of

return 1

but if you will call factorial(0) you will get True instead of 1.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM