#
# TIPS!: Kör implementationen med utskrifter, fact1 (n), nedan
#        och försök förstå vad som händer
#

# Rekursiv implementation av fakultetsfunktionen:

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

# Implementation med utskrifter

def fact1 (n):
    print ("fact1(%d) anropad" % n)
    if n == 0:
        res = 1
    else:
        res = n * fact1 (n - 1)
    print ("fact1(%d) -> %d" % (n, res))
    return res

# Implementation med slinga:
    
def fact2 (n):
    res = 1
    for i in range (1, n + 1):
        res *= i
    return res
