AP Computer Science Exam Question:
Write a recursive function printNumbers
in Java that takes an integer n
and prints all numbers from 1
to n
in ascending order. The function should not use any loops or iteration.
Example:
For n = 5
, the output should be:
1
2
3
4
5
Signature:
public static void printNumbers(int n)
Input:
n
that represents the upper limit of the number range (1 ≤ n ≤ 100).Output:
n
in ascending order.Note: Your solution should be implemented using recursion and should not use any loops or iteration.
Explanation:
Here is the step-by-step recursive approach to solve the problem:
n
is less than or equal to 0, return.printNumbers(n-1)
.n
.Let's implement this solution in Java:
public class RecursivePrintNumbers {
public static void printNumbers(int n) {
if (n <= 0) {
return; // Base case
}
printNumbers(n-1); // Recursive call
System.out.println(n); // Print n
}
public static void main(String[] args) {
printNumbers(5); // Calling the function with n=5
}
}
Explanation of Solution:
When printNumbers(5)
is called, it enters the printNumbers
method with n=5
.
Since 5 is greater than 0, it executes the recursive case by calling printNumbers(4)
, then printNumbers(3)
, and so on until printNumbers(0)
.
When printNumbers(0)
is called, it hits the base case and returns without doing anything.
As the recursive calls unwind, printNumbers(1)
is executed, followed by printNumbers(2)
, printNumbers(3)
, printNumbers(4)
, and finally printNumbers(5)
.
Now, as the recursive calls unwind, each number from 1 to 5 is printed in the correct order.
The output of the code above will be:
1
2
3
4
5
This demonstrates the recursive thinking process to print numbers from 1 to n
in ascending order without using any loops or iteration.