# Assume the availability of a method named makeLine that can be passed a non-negative integer n and a character c and return a String consisting of n identical characters that are all equal to c.

1

### CHALLENGE:

Assume the availability of a method named makeLine that can be passed a non-negative integer n and a character c and return a String consisting of n identical characters that are all equal to c. Write a method named printTriangle that receives two integer parameters n and k. If n is negative the method does nothing. If n happens to be an even number, its value is raised to the next odd number (e.g. 4–>5). Then, when k has the value zero, the method prints a SYMMETRIC triangle of O’s (the capital letter O) as follows: first a line of n O, followed by a line of n-2 O’s (indented by one space), and then a line of n-4 O’s (indented by two spaces), and so on. For example, if the method received 5,0 (or 4,0) it would print:
OOOOO
OOO
O

Note: in the above output , the first line contains 0 spaces before the first O, the next line 1 space, and so on.

Note: These instructions state what the method does when k is zero, but it is up to you, the programmer, to determine what it does when k is not zero and use it for your advantage.

The method must not use a loop of any kind (for, while, do-while) to accomplish its job. The method should invoke makeLine to accomplish the task of creating Strings of varying lengths.

### SOLUTION:

```public void printTriangle(int n, int k){
if(n < 0)
return;
if(n % 2 == 0)
n++;
System.out.println(makeLine(k, ' ') + makeLine(n, 'O'));
printTriangle(n-2, k+1);
}
```

#### One comment

• jingleJingle says:

public void printTriangle(int n, int k){
if(n < 0)
return;
if(n % 2 == 0)
n++;
System.out.println(makeLine(k, ' ') + makeLine(n, 'O'));
printTriangle(n-2, k+1);
}