FPS: Chapter 31 - 34
Chapter 31
Let’s write a sum function using recursion!
def sum(x: List[Int]): Int = {
if (x.isEmpty) {
0
} else {
x.head + sum(x)
}
}
// alternative
def sum(x: List[Int]): Int = {
x match {
case Nil => 0
case head :: tail => head + sum(tail)
}
}
In the case example, you could obviously use any variable name, for example h :: t, it doesn’t matter. In recursion, x is usually a single element and xs is usually multiple elements.
Chapter 32
My lucky number! This chapter is a descrpiption of how a recursive function works - I already know this, but will summarize basics.
Nil is the base case of a recursive function on a List in scala. Makes sense. case Nil => ??? should be your recursive functions base case.
The author mentions that recursive calls unwind, as a function returns and the call stack gets rewound.
Chapter 33 Visualizing the recursive sum function
The author uses a UML diagram to show the function execution, it works pretty well. Pretty useless chapter though.
Chapter 34: Recursion - A conversation between two developers
Didn’t learn anything from the chapter, but did enjoy the question -> answer format. Eliezer Yudkowsky uses a similar format to write, I might copy it to further develop my arguments.