Функции Fixed Point и Catch
Функции Fixed Point и Catch
В функциональном программировании вместо циклов, описываемых далее, может использоваться следующая функция:
- FixedPoint [ f, expr ] — вычисляет expr и применяет к нему f, пока результат не перестанет изменяться;
- FixedPoint [ f, expr, SameTest->comp] — вычисляет expr и применяет к нему f, пока два последовательных результата не дадут True в тесте SameTest.
Пример применения функции FixedPoint:
FixedPoint[Function[t, Print[t]; Floor[t/2]], 27]27 13 6 3 1 0 0 Последний результат (ноль) выводится в отдельной (нумерованной) ячейке вывода и означает завершение процесса итераций — деления t на 2. Следующий пример показывает, как можно создать цепную дробь с помощью функции Nest: Nest[ Functiontt, 1/(1+t)], у, 3 ] 1/(1/(1/((1+y)+1)+1)+1) Еще одна функция такого рода — это Catch:
- Catch [expr] — вычисляет expr, пока не встретится Throw [value], затем возвращает value;
- Catch [expr, form] — вычисляет expr, пока не встретится Throw [value, tag], затем возвращает value;
- Catch [expr, form, f] — возвращает f [value, tag] вместо value. Ниже представлены некоторые конструкции циклов с оператором Catch: