Skip to content

Instantly share code, notes, and snippets.

@febbraro
Created September 21, 2012 00:55
Show Gist options
  • Save febbraro/3759185 to your computer and use it in GitHub Desktop.
Save febbraro/3759185 to your computer and use it in GitHub Desktop.
Scala Example Exercise
package example
import common._
import java.util.NoSuchElementException
object Lists {
/**
* This method computes the sum of all elements in the list xs. There are
* multiple techniques that can be used for implementing this method, and
* you will learn during the class.
*
* For this example assignment you can use the following methods in class
* `List`:
*
* - `xs.isEmpty: Boolean` returns `true` if the list `xs` is empty
* - `xs.head: Int` returns the head element of the list `xs`. If the list
* is empty an exception is thrown
* - `xs.tail: List[Int]` returns the tail of the list `xs`, i.e. the the
* list `xs` without its `head` element
*
* ''Hint:'' instead of writing a `for` or `while` loop, think of a recursive
* solution.
*
* @param xs A list of natural numbers
* @return The sum of all elements in `xs`
*/
def sum(xs: List[Int]): Int = {
if (xs.isEmpty) 0
else xs.head + sum(xs.tail)
}
/**
* This method returns the largest element in a list of integers. If the
* list `xs` is empty it throws a `java.util.NoSuchElementException`.
*
* You can use the same methods of the class `List` as mentioned above.
*
* ''Hint:'' Again, think of a recursive solution instead of using looping
* constructs. You might need to define an auxiliary method.
*
* @param xs A list of natural numbers
* @return The largest element in `xs`
* @throws java.util.NoSuchElementException if `xs` is an empty list
*/
def max(xs: List[Int]): Int = {
val head = xs.head
val tail = xs.tail
if (tail.isEmpty) head
else {
val m = max(tail)
if (head >= m) head else m
}
}
}
@asgs
Copy link

asgs commented Sep 24, 2017

For the max method, the comments suggest that an auxillary method might need to be defined. what does that mean?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment