Накопление
а. Покажите, что
sum
и
product
(упражнение
1.31
) являются частными случаями еще более общего понятия, называемого накопление (accumulation), которое комбинирует множество термов с помощью некоторой общей функции накопления
(accumulate combiner null-value term a next b)
Accumulate
принимает в качестве аргументов те же описания термов и диапазона, что и
sum
с
product
, а еще процедуру
combiner
(двух аргументов), которая указывает, как нужно присоединить текущий терм к результату накопления предыдущих, и
null-value
, базовое значение, которое нужно использовать, когда термы закончатся. Напишите
accumulate
и покажите, как и
sum
, и
product
можно определить в виде простых вызовов
accumulate
.
б. Если Ваша процедура
accumulate
порождает рекурсивный процесс, перепишите ее так, чтобы она порождала итеративный. Если она порождает итеративный процесс, перепишите ее так, чтобы она порождала рекурсивный.
Комментарии отсутствуют.