Solution Review: Max with Nested Functions
Explore how to define nested functions in Scala by creating a helper function that finds the maximum of two numbers, then use it within a parent function to determine the maximum of three. This lesson helps you understand function decomposition and calling nested functions effectively.
Task
In this challenge, you had to create a nested function max which would help its parent function mainMax to compute the maximum of three numbers.
Solution
A skeleton of the mainMax function was already provided for you. Let’s look it over.
def mainMax(a: Int, b: Int, c: Int): Int = {
}
mainMax takes three parameters of type int and returns a value of type Int.
Let’s go over the step-by-step process for writing the max function.
maxis intended to break down the bigger problem into a smaller one. WhilemainMaxreturns the maximum of three numbers,maxreturns the maximum of two of them. This means that it will take two parameters of typeIntand return the greater of the two. To find the maximum of two numbers, a simpleif-elseexpression can be used.
def max(x: Int, y: Int) = {
if(x > y) x
else y
}
- As for the return value of
mainMax, we simply needed to call themaxfunction. The first argument will be one of the three numbers passed tomainMaxand the second argument will be the maximum of the remaining two. To get the second argument, we will use themaxfunction again as it returns the maximum of two numbers.
max(a,max(b,c))
You can find the complete solution below:
You were required to write the code from line 1 to line 7.
In the next lesson, we will learn about lexical scope.