This commit is contained in:
2024-02-10 20:51:14 +01:00
parent 243bed60eb
commit 489ca42d32
19 changed files with 125 additions and 42 deletions

View File

@@ -4,19 +4,47 @@ import scala.annotation.tailrec
object FrenchDude {
def main(args: Array[String]): Unit = {
startPascal(5)
println(" ")
startPascal2(5)
}
def pascalTriangle(c: Int, r: Int): Int = {
@tailrec
def loop(c0: Int, r0: Int, pred: Array[Int], cur: Array[Int]): Int = {
cur(c0) = (if (c0 > 0) pred(c0 - 1) else 0) + (if (c0 < r0) pred(c0) else 0)
if ((c0 == c) && (r0 == r)) cur(c0)
else if (c0 < r0) loop(c0 + 1, r0, pred, cur)
else loop(0, r0 + 1, cur, new Array(_length = r0 + 2))
def startPascal(n:Int):Unit={
pascal(Array(1),n)
}
def startPascal2(n:Int):Unit={
pascal2(Array(1),n)
}
//Endrekursiv
@tailrec
def pascal (arr:Array[Int],n:Int): Unit = {
arr.foreach(v => print(v+" "))
var newArr = Array[Int]()
newArr = newArr :+ 1
for (i <- arr.indices){
if (i<arr.length-1)
newArr = newArr:+ arr(i)+arr(i+1)
}
newArr = newArr :+ 1
println()
if(newArr.length <= n+1)
pascal(newArr,n)
}
if ((c == 0) && (r == 0)) 1
else loop(0, 1, Array(1), Array(0, 0))
//Rekursiv, aber nicht Endrekursiv
def pascal2 (arr:Array[Int],n:Int): Unit = {
arr.foreach(v => print(v+" "))
var newArr = Array[Int]()
newArr = newArr :+ 1
for (i <- arr.indices){
if (i<arr.length-1)
newArr = newArr:+ arr(i)+arr(i+1)
}
newArr = newArr :+ 1
println()
if(newArr.length <= n+1)
pascal2(newArr,n)
println()
}
}