package kapitel_03 /** * Beispiel aus * * - Algorithmen und Datenstrukturen für Dummies * - von Andreas Gogol-Döring und Thomas Letschert * - Verlag Wiley-VCH; Oktober 2019 * - Kapitel 3, Daten und ihre Struktur * * @author A. Gogol-Döring, Th. Letschert */ object AuD_03_05_ListSum_App extends App { abstract class IntList case object Nil extends IntList case class Cons(head: Int, tail:IntList) extends IntList def FList(n: Int): IntList = { def F(x: Int): Int = if (x == 0) 1 else x * F(x-1) var l: IntList = Nil for (i <- 0 to n) l = Cons(F(i), l) l } def ListSum(lst: IntList): Int = { var s = 0 var lstVar: IntList = lst while (lstVar != Nil) { lstVar match { case Cons(v, rest) => s = s + v lstVar = rest case _ => } } s } def ListSumR(lst: IntList): Int = lst match { case Cons(v, rest) => v + ListSumR(rest) case Nil => 0 } val l = Cons(1, Cons(2, Cons(3, Cons(4, Cons(5, Nil))))) println(ListSum(l)) println(ListSumR(l)) }