Course of Raku / Essentials / Creating and calling functions / Exercises / Recursive factorial

# Solution: Recursive factorial

Factorial is a very productive exercise, as it can be solved in a number of different ways. This time we are using recursion, which means that the function is called from itself.

## Code 1

Here is the code of the solution. Notice that you need to check the condition to stop the recursion, otherwise it will continue infinitely.

```
sub factorial($n) {
if $n < 2 {
return 1;
}
else {
return $n * factorial($n - 1);
}
}
say factorial(10);
```

🦋 Find the program in the file recursive-factorial.raku.

## Code 2

In the cases, as shown in this code, it is often better to use postfix forms of `if`

to immediately return from the function. This approach clears the code and removes a lot of indentation and punctuation.

```
sub factorial($n) {
return 1 if $n < 2;
return $n * factorial($n - 1);
}
say factorial(10);
```

🦋 Find the updated program in the file recursive-factorial-2.raku.

## Example

Run the program and check the result. By the way, did you know that *10!* is the exact number of seconds in six weeks?

```
$ raku exercises/functions/recursive-factorial.raku
3628800
```

## Next exercise

## Course navigation

← Associative data types / Interpolating hashes | More about functions →