Concept
How can a recursive method sum the elements of an array?
ComputerScienceOne / Recursion
"As another example that actually does something useful, consider the following recursive summation method that takes an array and an index variable. The recursion works as follows: if the index variable has reached the size of the array, it stops and returns zero (the base case). Otherwise, it makes a recursive call to recSum(), incrementing the index variable by 1. When the method returns, it adds its result to the i-th element in the array. To invoke this method we would call it with an initial value of 0 for the index variable: recSum(arr, 0).\n\n1 public static int recSum(int arr[], int i) {\n\n2 if(i == arr.length) {\n\n3 return 0;\n\n4 } else {\n\n5 return recSum(arr, i+1) + arr[i];\n\n6 }\n\n7 }\n\nThis example was not tail-recursive as the recursive call was not the final operation (the sum was the final operation). To make this method tail recursive, we can carry the summation through to each method call ensuring that the summation is done prior to the recursive method call.\n\n1 public static int recSumTail(int arr[], int i, int sum) {\n\n2 if(i == arr.length) {\n\n3 return sum;\n\n4 } else {\n\n5 return recSumTail(arr, i+1, sum + arr[i]);\n\n6 }\n\n7 }"
Related Ideas
- How can you implement ordinary and tail-recursive summation functions in PHP?ComputerScienceOne · Recursion
- How can recursive functions be written in C?ComputerScienceOne · Recursion
- How can recursion be made tail-recursive in C?ComputerScienceOne · Recursion
- How can arrays be passed to and returned from methods in Java?ComputerScienceOne · Dynamic Memory
- What happens when a function calls itself?ComputerScienceOne · Recursion
- How can a countdown be written without a loop?ComputerScienceOne · Recursion
- How can BigInteger be used for large recursive Fibonacci values?ComputerScienceOne · Recursion
- How is memoization implemented for recursive Fibonacci in C?ComputerScienceOne · Recursion