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 */ import scala.annotation.tailrec object AuD_03_07_FIter_App extends App { def FItera(n: Int): Int = { var acc1: List[Int] = Nil var nV = n while (nV != 0) { acc1 = nV :: acc1 nV = nV - 1 } var acc2 = 1 var rev = acc1 while (rev != Nil) rev match { case head :: rest => acc2 = acc2 * head rev = rest case _ => } acc2 } def FTR(n: Int): Int = { @tailrec def f(n: Int, acc: Int): Int = if (n == 0) acc else f(n-1, acc * n) f(n, 1) } def FIter(n: Int): Int = { var f = 1 var nV = n while (nV != 0) { val (n_, f_) = (nV-1, nV * f) nV = n_ f = f_ } f } println(FTR(10)) println(FIter(10)) println(FItera(10)) }