Поэтому я должен сделать программу, которая выводит треугольник чисел в том смысле, что если, скажем, входной сигнал triangleOfNumbers(1, 5)
он печатает:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
Я быстро понял, как это сделать с помощью циклов:
for (int i = start; i <= end; i++) {
for (int j = start; j <= i; j++) {
System.out.print(j + " ");
}
System.out.println();
}
Но насколько я ударился головой о стену, я просто не могу понять, как это сделать с рекурсией. Я на самом деле начинаю думать, что я не умею программировать, если не могу понять такую простую вещь.
В любом случае.. любое решение или подсказка будет оценена! Если вы хотите получить больше подробностей и на самом деле объяснить, что происходит в указанной рекурсии, было бы еще лучше!
Первая функция рекурсивно заполняет строку. Начиная с номера, функция продолжает конкатенировать числа как строки до тех пор, пока не будет достигнута, и рекурсия прекратится. Вторая функция выполняет то же самое, кроме объединения строк до тех пор, пока нижняя граница не достигнет верхней границы.
public class Test
{
public static String row(int n)
{
if (n == 1)
return "1";
else
return row(n - 1) + " " + n;
}
public static String triangle(int a, int b)
{
if (a == b)
return row(b);
else
return row(a) + "\n" + triangle(a + 1, b);
}
public static void main(String[] args)
{
System.out.println(triangle(1, 10));
}
}
Этот код поможет вам распечатать такой шаблон.
public String triangle(int n){
if(n<=0){
return "";
}else{
String p=triangle(n-1);
p=p +""+ (n);
System.out.println(p);
return p;
}
}