diff options
author | Louis Pilfold <louis@lpil.uk> | 2024-01-18 20:34:43 +0000 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2024-01-18 20:34:43 +0000 |
commit | ab2b9a982ede817362072623ff9ae2aa42e083da (patch) | |
tree | 5c055c588fafc5075831b7d9273e232da76da73b /src/content/chapter2_flow_control/lesson06_tail_calls/code.gleam | |
parent | 8d93f5ab2a04a9f2f8eb23b11617d83fad1c5316 (diff) | |
download | tour-ab2b9a982ede817362072623ff9ae2aa42e083da.tar.gz tour-ab2b9a982ede817362072623ff9ae2aa42e083da.zip |
Move recursion lessons together
Diffstat (limited to 'src/content/chapter2_flow_control/lesson06_tail_calls/code.gleam')
-rw-r--r-- | src/content/chapter2_flow_control/lesson06_tail_calls/code.gleam | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/content/chapter2_flow_control/lesson06_tail_calls/code.gleam b/src/content/chapter2_flow_control/lesson06_tail_calls/code.gleam new file mode 100644 index 0000000..d823eec --- /dev/null +++ b/src/content/chapter2_flow_control/lesson06_tail_calls/code.gleam @@ -0,0 +1,21 @@ +import gleam/io + +pub fn main() { + io.debug(factorial(5)) + io.debug(factorial(7)) +} + +pub fn factorial(x: Int) -> Int { + // The public function calls the private tail recursive function + factorial_loop(x, 1) +} + +fn factorial_loop(x: Int, accumulator: Int) -> Int { + case x { + 1 -> accumulator + + // The last thing this function does is call itself + // In the previous lesson the last thing it did was multiple two ints + _ -> factorial_loop(x - 1, accumulator * x) + } +} |