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
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