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 a recursive method sum the elements of an array? | ComputerScienceOne | Bifalgorithm | Bifalgorithm