Iterative and recursive processes

A function f is defined by the rule that f(n) = n if n < 3 and f(n) = f(n - 1) + 2f(n - 2) + 3f(n - 3) if n ≥ 3 . Write a procedure f that computes f by means of a recursive process. Write a procedure f-iter that computes f by means of an iterative process.


    # Victor Kaptsov
    1 month ago
    А точно ли все тесты правильные? (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
    1 month ago
    При 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
    1 month ago
    Да, вы правы. Изначально в русской версии была формула без коэффициентов (если у вас есть печатная версия книги или pdf файл - то ошибка присутствует и там). Формулу позднее исправили, а тесты упустили. Спасибо! Отправил пул реквест с исправлением
Authentication required

You must log in to post a comment.

Login
(check-equal? (f 4) 11)
(check-equal? (f-iter 4) 11)
(check-equal? (f 3) 4)
(check-equal? (f-iter 1) 1)