Question:
Write a recursive method printNumbers that takes an integer n as a parameter and prints the numbers from 1 to n in ascending order. The method should not use any loops or iteration.
Signature:
public void printNumbers(int n)
Example:
printNumbers(5)
Output:
1 2 3 4 5
Explanation:
The method printNumbers recursively calls itself with the new parameter n-1 until n becomes 0. On each recursive call, we print the current value of n, and then make another recursive call with the new parameter n-1. This continues until n becomes 0, at which point the recursion ends and the method returns.
The steps involved are as follows:
printNumbers(5) - prints "5" and calls printNumbers(4)printNumbers(4) - prints "4" and calls printNumbers(3)printNumbers(3) - prints "3" and calls printNumbers(2)printNumbers(2) - prints "2" and calls printNumbers(1)printNumbers(1) - prints "1" and calls printNumbers(0)printNumbers(0) - base case reached, recursion ends, nothing is printed and the method returns.So, the numbers are printed in ascending order: 5 4 3 2 1.
public void printNumbers(int n) {
// Base case: when n is 0, return
if (n == 0) {
return;
}
// Recursive case: print n and call printNumbers with n-1
printNumbers(n-1);
System.out.print(n + " ");
}
Complexity Analysis:
printNumbers method is O(n) because we are making n recursive calls, and each call takes O(1) time.n recursive calls.