Quick actions

cmd+k|ctrl+k

Navigation

Languages

Factorial/Fibonachi/ReverseString/Max in array

Snippet info

Language

Scala

Visibility

public

Author

devernul

Created

2018-12-07T17:50:56Z

Updated

2018-12-07T17:50:56Z

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"))
    
}
INFO