Friday, April 15, 2016

Tail Recursive function Example

Factorial Function without tail recursion

package TailRecur

object Factorial4 {
def factorial(n:Int): Int ={
if(n==0)1
else n*factorial(n-1)
  }                                  //> factorial: (n: Int)Int
  factorial(5)                       //> res0: Int = 120
}

if 5==0 
5* factorial(4)
5 * 4 * factorial(3)
5 * 4 * 3 * factorial(2)
5 * 4 * 3 * 2 * factorial(1)
5 * 4 * 3 *2 *1 =120 

---------------------------------
Tail Recursive function factorial function


object Factorial4 {

def factorial(n:Int): Int ={
 def loop(acc: Int, n: Int): Int =
  if(n==0)acc
   else loop(acc * n, n-1)
   loop(1,n)
  }                   //> factorial: (n: Int)Int
   factorial(5)       //> res0: Int = 120

  }

---------------------------------
 if 5==0 , false 
 else, loop(1*5,4)
 if 4==0 , false 
 else, loop(5 * 4,3)
 if 3==0 , false 
 else, loop(20*3,2)
 if 2==0 , false 
 else, loop(60*2,1)
 if 1==0 , false 
 else, loop(120*1,0)
 if 0==0 , true
 120







No comments:

Post a Comment