Scala 作业记录 00

来源:互联网 发布:java 事物的特征 编辑:程序博客网 时间:2024/06/04 21:36

Functional Programming Principles in Scala
by Martin Odersky

Example Assignment: Instructions

package exampleimport common._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    def loop(acc: Int, rem: List[Int]): Int = {      if (rem.isEmpty) acc      else loop(acc + rem.head, rem.tail)    }    loop(xs.head, 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 = {    if (xs.isEmpty) {      throw new java.util.NoSuchElementException    }    def loop(acc: Int, rem: List[Int]): Int = {      if (rem.isEmpty) acc      else loop( if (acc > rem.head) acc else rem.head , rem.tail)    }    loop(xs.head, xs.tail)  }}


0 0
原创粉丝点击