📖 Scenario: Imagine you have a list of daily expenses and you want to find the total amount spent. Instead of adding them one by one using loops, you will use a method that calls itself to find the total.
🎯 Goal: Build a Java program that uses recursion to calculate the sum of all elements in an integer array.
📋 What You'll Learn
Create an integer array with exact values
Create a helper variable for the array length
Write a recursive method to sum the array elements
Print the final sum
💡 Why This Matters
🌍 Real World
Recursion helps solve problems like summing expenses, searching, or processing data step-by-step without loops.
💼 Career
Understanding recursion is important for coding interviews and solving complex problems in software development.
Progress0 / 4 steps
1
Create the integer array
Create an integer array called expenses with these exact values: 100, 200, 300, 400, 500.
DSA Java
Hint
Use int[] expenses = {100, 200, 300, 400, 500}; to create the array.
2
Create a variable for the array length
Create an integer variable called n and set it to the length of the expenses array.
DSA Java
Hint
Use int n = expenses.length; to get the array size.
3
Write the recursive method to sum array elements
Write a recursive method called sumArray that takes the integer array arr and an integer size as parameters. The method should return 0 if size is 0. Otherwise, it should return the last element arr[size - 1] plus the result of calling sumArray with size - 1.
DSA Java
Hint
Use a base case when size == 0 to return 0. Otherwise, add the last element to the recursive call with size - 1.
4
Print the sum of the array elements
Call the sumArray method with expenses and n as arguments, and print the result using System.out.println.
DSA Java
Hint
Use System.out.println(sumArray(expenses, n)); inside the main method to print the sum.
Practice
(1/5)
1. What does a recursive function on an array typically do to process the elements?
easy
A. It calls itself with a smaller part of the array until a base case is reached
B. It uses loops to iterate over the array elements
C. It modifies the array without calling itself
D. It sorts the array before processing
Solution
Step 1: Understand recursion on arrays
Recursive functions reduce the problem size by calling themselves with smaller parts of the array.
Step 2: Identify base case and recursive call
The function stops when the array part is empty or has one element (base case), otherwise it calls itself with a smaller array.
Final Answer:
It calls itself with a smaller part of the array until a base case is reached -> Option A
Quick Check:
Recursion = smaller problem calls [OK]
Hint: Recursion breaks problem into smaller parts until simple case [OK]
Common Mistakes:
Thinking recursion uses loops instead of self-calls
Ignoring the base case in recursion
Assuming recursion sorts the array automatically
2. Which of the following is the correct syntax to define a recursive method in Java that takes an integer array and an index as parameters?
easy
A. void recurse(int arr[], index int) { ... }
B. public void recurse(int[] arr, int index) { ... }
C. public int recurse(int arr, int index) { ... }
D. public void recurse(int[] arr; int index) { ... }
Solution
Step 1: Check Java method syntax
Java methods require return type, method name, and parameters with types and commas.
Step 2: Validate parameter types and order
public void recurse(int[] arr, int index) { ... } correctly uses 'int[] arr' and 'int index' separated by a comma and proper method signature.
Final Answer:
public void recurse(int[] arr, int index) { ... } -> Option B
Hint: Remember Java method parameters need types and commas [OK]
Common Mistakes:
Using wrong parameter order or missing commas
Incorrect array parameter syntax
Missing return type in method definition
3. What will be the output of the following Java code?
public class Test {
public static void printArray(int[] arr, int index) {
if (index == arr.length) return;
System.out.print(arr[index] + " ");
printArray(arr, index + 1);
}
public static void main(String[] args) {
int[] nums = {1, 2, 3};
printArray(nums, 0);
}
}
medium
A. Compilation error
B. 3 2 1
C. 1 2 3 0
D. 1 2 3
Solution
Step 1: Trace the recursive calls
printArray prints arr[index] then calls itself with index+1 until index equals arr.length (3).
Step 2: Output elements in order
It prints 1, then 2, then 3, then stops without extra output.
Final Answer:
1 2 3 -> Option D
Quick Check:
Recursion prints array elements in order [OK]
Hint: Recursion prints then calls next index until end [OK]
Common Mistakes:
Expecting reverse order output
Thinking extra elements print after recursion ends
Confusing base case condition
4. Identify the error in this recursive method that tries to sum elements of an integer array:
public int sumArray(int[] arr, int index) {
if (index > arr.length) return 0;
return arr[index] + sumArray(arr, index + 1);
}
medium
A. Array parameter should be List<Integer>
B. Method should return void instead of int
C. Base case condition should be index >= arr.length
D. Recursive call should use index - 1
Solution
Step 1: Check base case condition
Index should stop recursion when it reaches arr.length, so condition must be index >= arr.length.
Step 2: Understand array bounds
Using index > arr.length allows index == arr.length, which causes ArrayIndexOutOfBoundsException.
Final Answer:
Base case condition should be index >= arr.length -> Option C
Quick Check:
Base case must prevent out-of-bounds access [OK]
Hint: Base case index must not exceed array length [OK]
Common Mistakes:
Using wrong base case condition causing runtime error
Changing return type incorrectly
Incorrect recursive index update
5. Given a string, write a recursive method to check if it is a palindrome (reads the same forwards and backwards). Which approach correctly describes the recursion?
hard
A. Compare first and last characters, then recurse on substring excluding them
B. Reverse the string using recursion and compare with original
C. Count characters recursively and check if count is even
D. Use recursion to sort characters and check equality
Solution
Step 1: Understand palindrome check logic
Check if first and last characters match, then check the substring inside recursively.
Step 2: Identify correct recursive approach
Compare first and last characters, then recurse on substring excluding them matches this logic, reducing problem size each call until base case (empty or one char string).
Final Answer:
Compare first and last characters, then recurse on substring excluding them -> Option A