"""
    Рекурсию можно применить например к алгоритму вычисления факториала.

"""


def main():
    n = int(input("n: "))
    result = fact(n)
    print(result)


def fact(n):
    if n == 0:
        return 1  # если n == 0 - возвращаем 1, так как факториал числа !0 = 1
    return n * fact(n - 1)  # умножаем число n на вызов функции с числом n - 1


if __name__ == "__main__":
    main()

# пример вычисления !5
# сначала идет рекурсивный вызов функции,
# затем начиная с последнего вызова идет возвращение значения - return

# факториал числа 5 -> !5 = 1 * 2 * 3 * 4 * 5 = 120

# 5 * fact(4)
#     4 * fact(3)
#         3 * fact(2)
#             2 * fact(1)
#                 1 * fact(0)
#                 1
#             2
#         6
#     24
# 120
