1. Engineering
  2. Computer Science
  3. generated instructions complete the exercises below...

Question: generated instructions complete the exercises below...

Question details

// GENERATED

/* INSTRUCTIONS
*
* Complete the exercises below. For each "EXERCISE" comment, add
* code immediately below the comment.
*
* Please see README.md for instructions, including compilation and testing.
*
* GRADING
*
* 1. Submissions MUST compile using SBT with UNCHANGED configuration and tests with no
* compilation errors. Submissions with compilation errors will receive 0 points.
* Note that refactoring the code will cause the tests to fail.
*
* 2. You MUST NOT edit the SBT configuration and tests. Altering it in your submission will
* result in 0 points for this assignment.
*
* 3. You MUST NOT use while loops or (re)assignment to variables (you can use "val" declarations,
* but not "var" declarations). You must use recursion instead.
*
* 4. You may declare auxiliary functions if you like.
*
* SUBMISSION
*
* 1. Push your local repository to the repository created for you on Bitbucket before the deadline.
*
* 2. Late submissions will not be permitted because solutions will be discussed in class.
*
*/

object fp1 {

// EXAMPLE: here is the definition of the factorial function.
def fact (n : Int) : Int = {
if (n <= 1)
1
else
n * fact (n - 1)
}

// EXERCISE 9: given the definition of the function "maxTailRecursive" below, complete the
// definition of the function "maxTailRecursiveAux" so that "maxTailRecursive" also finds the
// maximum of a list of integers. You must not alter the definition of "maxTailRecursive". Your
// definition for "maxTailRecursiveAux" must be recursive and not use while loops.
def maxTailRecursiveAux (accumulator : Int, xs : List[Int]) : Int = {
// TODO: Provide definition here.
-1
}

def maxTailRecursive (xs : List[Int]) : Int = {
xs match {
case Nil => throw new RuntimeException ()
case y::ys => maxTailRecursiveAux (y, ys)
}
}

// EXERCISE 10: Write a recursive function "otpu" ("upto" backwards) that takes two Int parameters
// "start" and "end" and produces a "List[Int]" that counts DOWN from "start" to "end" (inclusive
// at both ends) one at a time. If "start < end", the empty list must be returned.
def otpu (start : Int, end : Int) : List[Int] = {
// TODO: Provide definition here.
null
}
}

Solution by an expert tutor
Blurred Solution
This question has been solved
Subscribe to see this solution