Chapter 9, Designing Functions – Recursion
9.1 Into reverse: An empty string is reversed by simply doing nothing. To reverse a non-empty string, remove its first character, reverse the rest, and append the removed character at the end. For example, reverse("MONTEVIDEO")
can be found by doing reverse("ONTEVIDEO")+"M"
. In the same way, reverse("ONTEVIDEO")
would be equal to reverse("NTEVIDEO")+"O"
, and so on:
const reverse = (str: string): string => str.length === 0 ? "" : reverse(str.slice(1)) + str[0];
9.2 Climbing steps: To climb a ladder with n steps, we can act in two ways:
- Climb one single step and then climb an (n-1) steps ladder
- Climb two steps at once and then climb an (n-2) steps ladder
So, if we call ladder(n) the number of ways to climb a steps ladder, we know that ladder(n)= ladder(n-1) + ladder(n-2). Adding the fact that ladder(0)=1 (there’s only one...