адача 4. Составить рекурсивную программу-функцию, возвращающую сумму S компонентов вектора v: S = v0 + v1 + ... + vn-1.
Решение. Определение суммы n слагаемых в виде:
рекурсивно
по своей сути. Сумма n
слагаемых есть сумма первых (n - 1)-го слагаемого плюс сумма
последнего слагаемого. Этот факт и положен
в основу определения функции summa(v),
где
v = (v0, v1, ... ,vn-1)T:
Заметим, что декомпозицию можно провести и из такого представления суммы:
Соответствующая рекурсивная функция sum(v) могла бы выглядеть так:
И хотя в данном случае вычисления по функции sum(v) не являются более эффективными, чем по summa(v), подобная дихотомия иногда себя вполне оправдывает, существенно уменьшая общее количество рекурсивных вызовов и улучшая временные характеристики алгоритма.
адача 5. Составить рекурсивную программу-функцию, возвращающую произведение P компонентов вектора v: P = v0× v1× ...× vn-1.
Решение. Определение произведения n сомножителей в виде:
как и соответствующее определение суммы, рекурсивно по своей сути. Произведение n сомножителей есть произведение первых (n - 1)-го сомножителей, умноженное на последний сомножитель. Отсюда и определение функции product(v), где v = (v0 , v1, ... ,vn-1)T: