Write a recursive method called draw Triangle() that outputs lines of * to form an upside down isosceles triangle. Method draw Triangle( has one parameter, an integer representing the base length of the triangle. Assume the base length is always odd and less than 20. Output 9 spaces before the first ** on the last line for correct formatting. Hint: The number of ** decreases by 2 for every line drawn. Ex: If the input of the program is: 3 the method drawTriangle() outputs: Ex: If the input of the program is: 19 the method draw Triangle() outputs:
import java.util.Scanner;
public class LabProgram {
// Recursive method to draw the triangle
public static void drawTriangle(int baseLength, int currentLength) {
if (currentLength <= 0) {
return; // Base case: stop when currentLength is 0 or negative
}
// Calculate the number of spaces needed for formatting
int spaces = (baseLength - currentLength) / 2;
if (currentLength == baseLength) {
// If it's the first line, don't output spaces before the first '*'
System.out.println(" ".repeat(spaces) + "*".repeat(currentLength));
} else {
// Output spaces and asterisks
System.out.println(" ".repeat(spaces) + "*".repeat(currentLength));
}
// Recursively call drawTriangle with the reduced currentLength
drawTriangle(baseLength, currentLength - 2);
}
public static void drawTriangle(int baseLength) {
drawTriangle(baseLength, baseLength);
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
int baseLength = scnr.nextInt();
drawTriangle(baseLength);
}
}
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 1 images