Изменяющаяся часть вычисления как аргумент
Процедура высшего порядка фиксирует общую форму вычисления, принимая изменяющуюся операцию в качестве аргумента.
Как одна процедура может описать целое семейство сумм?
- Обращение с процедурой как с обычным значением
- Определение инвариантной структуры при суммировании
- Передача поведения через параметры term и next
Процедура sum не знает, складывает ли она целые числа, квадраты или другую последовательность. Параметр term выбирает значение для сложения. Параметр next выбирает следующую точку. Рекурсия отвечает только за общий шаблон обхода.
Такое разделение служит началом мощного навыка проектирования. Назовите неизменный процесс один раз и передавайте изменяющиеся решения.
- Вывод
- —
- Значение
- —
- Диагностика
- —
Первая программа возвращает 55. Вторая программа также возвращает 55.
Обратите внимание, что term и next ищутся и применяются на каждом шаге. Значения процедур проходят через тот же вычислитель, что и числовые значения.
Измените программу и сравните результат.
Определите процедуру double для term и процедуру step-two для next. Используйте sum, чтобы сложить удвоенные нечетные числа от 1 до 9.
Показать подсказку
Граница обхода остается прежней, даже когда next пропускает значения.