Рекурсивная функция — это функция, которая вызывает себя до тех пор, пока не достигнет оператора return, который не позволяет ей вызвать себя. Возьмем, к примеру, функцию факториала. Факториал — это математическая функция, которая возвращает число, умноженное само на себя — 1 умноженное само на себя — 2, ... умноженное на 1, пример: факториал 5 = 5! = 5x4x3x2x1 = 120. оно также равно самому себе, умноженному на факториал самого себя -1, что равно: 5! = 5х4! Учтите, что 0! = 1. чтобы представить это в коде Java, вам нужен цикл, который умножает числа, начиная с 1, и до числа, которое вы вычисляете для своего факториала. Более того, объясняя ваш код, давайте вычислим Factorial(5): Factorial() возвращает целое число.
Начальный вызов из main(): 5 != 0, затем пропустить условие (n == 0); т = факториал (5-1) = факториал (4);
Второй вызов из Factorial(4): 4 != 0, затем пропустить условие (n == 0); т = факториал (4-1) = факториал (3);
Третий вызов из Factorial(3): 3 != 0, затем пропустить условие (n == 0); т = факториал (3-1) = факториал (2);
Четвертый вызов из Factorial(2): 2 != 0, затем пропустить условие (n == 0); т = факториал (2-1) = факториал (1);
Пятый вызов из Factorial(1): 1 != 0, затем пропустить условие (n == 0); т = факториал (1-1) = факториал (0);
Шестой вызов Factorial(0): 0 == 0, затем возвращает значение 1;
Первый возврат, 1, к Пятому вызову (Factorial(1)): return n*t = return 1*1 = возвращаемое значение 1;
Второй возврат, 1, к четвертому вызову (Factorial(2)): return n*t = return 2*1 = возвращаемое значение 2;
Третий возврат, 2, к третьему вызову (Factorial(3)): return n*t = return 3*2 = возвращаемое значение 6;
Второй возврат, 6, ко второму вызову (Factorial(4)): return n*t = return 4*6 = возвращаемое значение 24;
Второй возврат, 24, к первому вызову (Factorial(5)): return n*t = return 5*24 = возвращаемое значение 120;
Второй возврат, 120, к начальному вызову (из main()): print(120);
Надеюсь, это поможет вам понять рекурсию.
person
Hani El Mouallem
schedule
25.09.2014