diff options
author | Louis Pilfold <louis@lpil.uk> | 2024-01-18 16:44:27 +0000 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2024-01-18 16:44:27 +0000 |
commit | f92661980deac22b54e79cd44c25caba17910c95 (patch) | |
tree | 165923d00aab8e7a5d5944d388dbb182c6d57b51 /src/content/chapter1_functions/lesson01_recursion | |
parent | e35f26eb4a034aad8a531986bf876075ffb02e3c (diff) | |
download | tour-f92661980deac22b54e79cd44c25caba17910c95.tar.gz tour-f92661980deac22b54e79cd44c25caba17910c95.zip |
Last of the content!
Diffstat (limited to 'src/content/chapter1_functions/lesson01_recursion')
-rw-r--r-- | src/content/chapter1_functions/lesson01_recursion/code.gleam | 17 | ||||
-rw-r--r-- | src/content/chapter1_functions/lesson01_recursion/text.html | 20 |
2 files changed, 37 insertions, 0 deletions
diff --git a/src/content/chapter1_functions/lesson01_recursion/code.gleam b/src/content/chapter1_functions/lesson01_recursion/code.gleam new file mode 100644 index 0000000..ee93a6f --- /dev/null +++ b/src/content/chapter1_functions/lesson01_recursion/code.gleam @@ -0,0 +1,17 @@ +import gleam/io + +pub fn main() { + io.debug(factorial(5)) + io.debug(factorial(7)) +} + +// A recursive functions that calculates factorial +pub fn factorial(x: Int) -> Int { + case x { + // Base case + 1 -> 1 + + // Recursive case + _ -> x * factorial(x - 1) + } +} diff --git a/src/content/chapter1_functions/lesson01_recursion/text.html b/src/content/chapter1_functions/lesson01_recursion/text.html new file mode 100644 index 0000000..f1585bb --- /dev/null +++ b/src/content/chapter1_functions/lesson01_recursion/text.html @@ -0,0 +1,20 @@ +<p> + Gleam doesn't have loops, instead iteration is done through recursion, that is + through top-level functions calling themselves with different arguments. +</p> +<p> + A recursive function needs to have at least one <em>base case</em> and at + least one <em>recursive case</em>. A base case returns a value without calling + the function again. A recursive case calls the function again with different + inputs, looping again. +</p> +<p> + The Gleam standard library has functions for various common looping patterns, + some of which will be introduced in later lessons, however for more complex + loops manual recursion is often the clearest way to write it. +</p> +<p> + Recursion can seem daunting or unclear at first if you are more familiar with + languages that have special looping features, but stick with it! With time + it'll become just as familiar and comfortable as any other way of iterating. +</p> |