Рекурсивно посчитать факториал Java.

программирование математика java

Код есть, но не пойму как он работает. Видимо, потому что не понимаю как сама рекурсия работает.

int fact(int n) {
int result;

if (n == 1)
return 1;
result = fact(n - 1) * n;
return result;
}

Допустим, передаем 4.
1-ый вызов: fact (4 - 1) * 4;
2-ой вызов: fact (3 - 1) * не пойму на что.
...
Не пойму как считать второе n.
Объясните, пжл.

Примечание:
Всё равно не пойму.
1. fact (4 - 1) * 4;
2. fact (3 - 1) * 3;
3. fact (2 - 1) * 2;
4. n = 1;

Обратные вызовы, какими будут? куда это полученное n подставлять-то?
По логике вещей, надо в третий вызов вернуться и подставить n:
(1 - 1) * 1 - не получается так ничего ><

Примечание:
Спасибо!
Ответы:
Так и будет:
2. fact (3 - 1) * 3;
3. fact (2 - 1) * 2;
              ↑ вернёт 1 без рекурсии.


10 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.