Javanese Online

Рекурсия

Рекурсия — это вызов методом самого себя.

Рассмотрим вычисление произвольного числа ряда Фибоначчи. Первое число ряда Фибоначчи равно 0, второе — 1, i-е число равно сумме (i-1)-го и (i-2)-го чисел.

public static long fib(int i) {
    if (i == 0) {
        return 0;
    }
    if (i == 1) {
        return 1;
    }
    return fib(i-1) + fib(i-2);
}

Обратите внимание, вместо int здесь используется тип long, диапазон значений которого значительно больше.

Схематически вычисление пятого числа из ряда Фибоначчи можно представить так:

{"name":"fib 5","subCalls":[{"name":"fib 4","subCalls":[{"name":"fib 3","subCalls":[{"name":"fib 2","subCalls":[{"name":"fib 1","subCalls":[]},{"name":"fib 0","subCalls":[]}]},{"name":"fib 1","subCalls":[]}]},{"name":"fib 2","subCalls":[{"name":"fib 1","subCalls":[]},{"name":"fib 0","subCalls":[]}]}]},{"name":"fib 3","subCalls":[{"name":"fib 2","subCalls":[{"name":"fib 1","subCalls":[]},{"name":"fib 0","subCalls":[]}]},{"name":"fib 1","subCalls":[]}]}]}
Комментарии
{"type":"lessonComments","id":"0187d86e-306a-419d-b41a-ff07bb81b9dd","comments":[{"id":"c99c47df-f06f-4a57-95b0-1e35b50740ce","authorSrc":"GitHub","authorId":"goodtoseeyou","text":"Спасибо автору за это прекрасное пособие для начинающих! Может тут указать, что есть гораздо более быстрые алгоритмы для вычисления чисел ряда Фибоначчи, а этот удобен для иллюстрации работы с рекурсией? Ещё раз благодарю!","added":1583213313663,"answers":[]}]}

Сообщить об ошибке

Javanese.Online в GitHub

Чаты и каналы в Telegram

RSS-лента