Question: // GENERATED /* INSTRUCTIONS * * Complete the exercises below. For each EXERCISE comment, add * code immediately below the comment. * * Please see
// 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 } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
