Итеративные и рекурсивные процессы
Функция
f
определяется правилом:
f(n) = n
, если
n < 3
, и
f(n) = f(n - 1) + 2f(n - 2) + 3f(n - 3)
, если
n ≥ 3
. Напишите процедуру
f
, вычисляющую
f
с помощью рекурсивного процесса. Напишите процедуру
f-iter
, вычисляющую
f
с помощью итеративного процесса.
#
Victor Kaptsov
11 месяцев назад
#
Victor Kaptsov
11 месяцев назад
А точно ли все тесты правильные?
(check-equal? (f 3) 3)
—
вот это выражение у меня получается так раскрыть:
f(3) = f(3 - 1) + 2f(3 - 2) + 3f(3 - 3) = f(2) + 2f(1) + 3f(0) = 2 + 2* 1 = 4
...
Где я ошибаюсь?
#
Victor Kaptsov
10 месяцев назад
#
Victor Kaptsov
10 месяцев назад
При n в диапазоне от 0 до 6 у меня вот такие выражения получаются:
f(0) = 0;
f(1) = 1;
f(2) = 2;
f(3) = 2 + 2 * 1 = 4;
f(4) = 4 + 2 * 2 + 3 * 1 = 11;
f(5) = 11 + 2 * 4 + 3 * 2 = 25;
f(6) = 25 + 2 * 11 + 3 * 4 = 59;
`
#
Anton Burenkov
10 месяцев назад
#
Anton Burenkov
10 месяцев назад
Да, вы правы. Изначально в русской версии была формула без коэффициентов (если у вас есть печатная версия книги или pdf файл - то ошибка присутствует и там). Формулу позднее исправили, а тесты упустили. Спасибо! Отправил пул реквест с исправлением