1: Обычная реализация таблицы умножения 99 слишком проста, справится даже программист. Реализация следующая:
пакет test.ms; публичный класс Test99 { public static void main(String[] args) { for(int i=1; i<=9;i++){ for(int j=1; j<=i; j++){ System.out.print(j+" * "+i+ " = "+(i*j) +" " } System.out.println() }} };
2. Используйте рекурсию для реализации таблицы умножения 99.
Код выглядит следующим образом:
package test.ms;public class MultiTable { public static void main(String args[]) { m(9 } /** * Распечатать таблицу умножения* @param i */ public static void m(int i) { if (i == 1) { System.out.println("1*1=1" } else { m(i - 1) for (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + "=" + j * i + " " } System.out.println(); } } };
Вызовите значок рекурсивно:
Каждый вызов метода генерирует кадр стека и помещает его в стек метода. При выполнении рекурсивного вызова кадр стека в стеке метода будет выглядеть так, как показано на рисунке выше.
Более интуитивно понятно удалить ссылочную связь кадра стека в методе: как показано на следующем рисунке:
Окончательное выполнение соответствующего вызова метода упрощается, как показано на рисунке выше. Обратите внимание, что i меняется, а j каждый раз начинается с 1, а затем увеличивается, пока не станет равным i.
Таким образом, после извлечения приведенной выше картинки из стопки, получается 99 таблиц умножения:
Подведите итог:
Сравнение вложенных циклов for и реализации рекурсии:
Стек в основном используется для хранения кадров стека. Каждый раз, когда выполняется метод, выполняется операция push. Поэтому при использовании рекурсии создается больше кадров стека. Однако использование рекурсии влияет на память. выполнится цикл for. Существует метод, который помещает кадр стека один раз, и существует только один кадр стека, поэтому он экономит память.
Добро пожаловать, чтобы поставить мне палец вверх. Пока не потерял сознание.