object Main extends App {
//Factorial
def findFactorialRecursive(number: Int):Long = {
if (number == 0) return 1
return number * findFactorialRecursive(number-1)
}
def findFactorialIterative(number: Int): Long = {
var answer = 0
answer
}
println(findFactorialRecursive(5))
println(findFactorialIterative(5))
//Fibonachi
def findFibonachiNumberIterative(number: Int): Seq[Int] = { //O(n)
var arr = Array(0, 1)
for (i <- 2 to number) {
arr = arr :+ (arr(i - 2) + arr(i -1))
}
arr
}
def findFibonachiNumberRecursive(number: Int): Int = { //O(2^n)
if (number < 2) return number
return findFibonachiNumberRecursive(number-1) + findFibonachiNumberRecursive(number-2)
}
def fib(x: Int): BigInt = {
def fibHelper(x: Int, prev: BigInt = 0, next: BigInt = 1): BigInt = x match {
case 0 => prev
case 1 => next
case _ => fibHelper(x - 1, next, (next + prev))
}
fibHelper(x)
}
// def findFibonachiRecursive(number: Int):Seq[Int] = {
// if (number < 1 ) return Seq(0)
// return findFibonachiRecursive(number-1) :+ findFibonachiNumberRecursive(number)
// }
println(fib(4))
//Max of int in List
def max(ints: List[Int]): Int = {
def maxAccum(ints: List[Int], theMax: Int): Int = {
ints match {
case Nil => theMax
case x :: tail =>
val newMax = if (x > theMax) x else theMax
maxAccum(tail, newMax)
}
}
maxAccum(ints, 0)
}
println(max(List(0,2,45,4,3,7)))
//Reverse string
def reverseString(s: String): String = {
if (s.isEmpty) ""
else reverseString(s.tail) + s.head
}
println(reverseString("Dima"))
}