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.