# Factorial

January 1, 2016

## Iterative

```
def factorial(n: Int): Long = {
var result = 1L
if (n <= 1) {
result
} else {
for (i <- 2 to n) {
result = result * i
}
result
}
}
```

## Recursive

```
def factorial(n: Long): Long = {
if (n <= 1) {
1L
} else {
n * factorial(n - 1)
}
}
```

## Tail Recursive

```
def factorial(n: Int): Long = {
factorial(n - 1, n)
}
def factorial(n: Long, accumulator: Long): Long = {
if (n <= 1) {
accumulator
} else {
factorial(n - 1, n * accumulator)
}
}
```