main() {
	for i := 0..10 {
		assert fac1(i) == fac2(i)
	}
}

fac1(n int) -> int {
	x := 1

	for i := 1..n+1 {
		x = x * i
	}

	return x
}

fac2(n int) -> int {
	if n <= 1 {
		return 1
	}

	return n * fac2(n - 1)
}