У меня есть эта рекурсивную функцию факториала:Что происходит внутри этой рекурсивной функции?
public class Driver{
public static void main (String args[])
{
System.out.println(factorial(5));
}
private static int factorial(int n)
{
int product;
if (n <= 2){ product = n; return 2;}
else{
product = n * factorial(n-1);
System.out.println("current product =" + product);
System.out.println("product = " + n + " * factorial(" + (n-1) + ")");
}
return product;
}
}
Он печатает следующее:
current product =6
product = 3 * factorial(2)
current product =24
product = 4 * factorial(3)
current product =120
product = 5 * factorial(4)
120
Я пытаюсь выяснить, что, черт возьми, здесь происходит. Я не понимаю, как он начинает печатать для n = 2. И откуда появился текущий продукт = 6? Благодаря!
Обратите внимание, что выход выполняется после рекурсивного вызова, поэтому первые две строки относятся к самой глубокой активации, которая выводит. –
ohh crapy Да, я вижу ошибку, теперь спасибо. Можете ли вы объяснить немного больше о том, что вы подразумеваете под «пройти мимо линии ниже». Благодаря! – papercuts
@papercuts, если можно, попробуйте запустить его в отладчике, что может помочь лучше, чем я могу. –