Треугольник чисел с рекурсией

1

Поэтому я должен сделать программу, которая выводит треугольник чисел в том смысле, что если, скажем, входной сигнал 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();
    }

Но насколько я ударился головой о стену, я просто не могу понять, как это сделать с рекурсией. Я на самом деле начинаю думать, что я не умею программировать, если не могу понять такую простую вещь.

В любом случае.. любое решение или подсказка будет оценена! Если вы хотите получить больше подробностей и на самом деле объяснить, что происходит в указанной рекурсии, было бы еще лучше!

Теги:
recursion
numbers

2 ответа

2

Первая функция рекурсивно заполняет строку. Начиная с номера, функция продолжает конкатенировать числа как строки до тех пор, пока не будет достигнута, и рекурсия прекратится. Вторая функция выполняет то же самое, кроме объединения строк до тех пор, пока нижняя граница не достигнет верхней границы.

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));
    }

}
  • 0
    Извини .. Видимо я солгал. Я должен иметь начало и конец в качестве аргументов в функции. Отредактировал мой вопрос соответственно.
  • 1
    Хорошо, исправил это. Вам нужны две рекурсивные функции. Один для рекурсивного создания строки и один для создания треугольника путем объединения строк с символами новой строки.
Показать ещё 12 комментариев
0

Этот код поможет вам распечатать такой шаблон.

public String triangle(int n){
    if(n<=0){
        return "";
    }else{
    String p=triangle(n-1);
    p=p +""+ (n);
    System.out.println(p);
    return p;
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню