Kotlin Tail Recursion Last Updated : 18 May, 2025 Comments Improve Suggest changes Like Article Like Report In a traditional recursion call, we perform our recursive call first, and then we take the return value of the recursive call and calculate the result. But in tail recursion, we perform the calculation first, and then we execute the recursive call, passing the results of the current step to the next recursive call. In the end, both recursion and tail recursion give the same output. The must-follow rule for tail recursion is that the recursive call should be the last call of the method.Benefits of using tail recursionIn tail recursion, the function call is the last thing executed by the function, and nothing left in the current function to execute. So, there is no need to save the current function call in the stack memory, and the compiler can reuse that stack space for the next recursive call.In tail recursion, we do not get the StackOverflowError during the execution of the program.Example 1: Find the factorial of a number using tail recursion Kotlin // Kotlin program of factorial using tail-recursion fun Fact(num: Int, x:Int):Long{ return if(num==1) // terminate condition x.toLong() else Fact(num-1,x*num) //tail recursion } fun main() { var n = 1 var result = Fact(5,n) println("Factorial of 5 is: $result") } Output:Factorial of 5 is: 120Working of the above programExample 2: Find the sum of elements of an array using tail-recursion Kotlin // two parameters passed an array and size of array fun sum(args: Array<Int> , index:Int, s : Int = 0 ):Int{ return if(index<=0) s else sum(args ,index-1, s + args[index-1]) // tail-recursion } fun main() { // array initialization val array = arrayOf(1,2,3,4,5,6,7,8,9,10) // size of array val n = array.size val result = sum(array,n) // normal function call println("The sum of array elements is: $result") } Output:The sum of array elements is: 55Explanation: Here, we have passed the array as an argument along with two other parameters to the sum() function. The default value of the (s) parameter is equal to zero. We are calculating the sum of elements from the last index of the array, with each recursive call. With the last recursive call, we will have the sum of all elements in s and return it when the condition is satisfied. Comment More info P Praveenruhil Follow Improve Article Tags : Kotlin Kotlin Basics Explore Kotlin Tutorial 4 min read OverviewIntroduction to Kotlin 4 min read Kotlin Environment setup for Command Line 2 min read Kotlin Environment setup with Intellij IDEA 2 min read Hello World program in Kotlin 2 min read BasicsKotlin Data Types 3 min read Kotlin Variables 2 min read Kotlin Operators 4 min read Kotlin Standard Input/Output 4 min read Kotlin Type Conversion 2 min read Kotlin Expression, Statement and Block 4 min read Control FlowKotlin if-else expression 4 min read Kotlin while loop 2 min read Kotlin do-while loop 2 min read Kotlin for loop 4 min read Kotlin when expression 6 min read Kotlin Unlabelled break 4 min read Kotlin labelled continue 4 min read Array & StringKotlin Array 6 min read Kotlin String 4 min read FunctionsKotlin functions 7 min read Kotlin Default and Named argument 7 min read Kotlin Recursion 3 min read Kotlin Tail Recursion 2 min read Kotlin Lambdas Expressions and Anonymous Functions 6 min read Kotlin Inline Functions 5 min read Kotlin infix function notation 5 min read Kotlin Higher-Order Functions 6 min read CollectionsKotlin Collections 6 min read Kotlin list : Arraylist 6 min read Kotlin list : listOf() 7 min read Kotlin Set : setOf() 4 min read Kotlin hashSetOf() 4 min read Kotlin Map : mapOf() 5 min read Kotlin Hashmap 7 min read OOPs ConceptKotlin Class and Objects 4 min read Kotlin Nested class and Inner class 3 min read Kotlin Setters and Getters 4 min read Kotlin Class Properties and Custom Accessors 3 min read Kotlin Constructor 6 min read Kotlin Visibility Modifiers 6 min read Kotlin Inheritance 10 min read Kotlin Interfaces 7 min read Kotlin Data Classes 3 min read Kotlin Sealed Classes 4 min read Kotlin Abstract class 5 min read Enum Classes in Kotlin 4 min read Kotlin extension function 4 min read Kotlin generics 6 min read Exception HandlingKotlin Exception Handling - try, catch, throw and finally 5 min read Kotlin Nested try block and multiple catch block 3 min read Null SafetyKotlin Null Safety 7 min read Kotlin Type Checking and Smart Casting 3 min read Kotlin Explicit Type Casting 3 min read Like