Использование подстановок при определении функций позволяет легко реализовывать рекуррентные алгоритмы, то есть алгоритмы, при которых очередной шаг вычислений основан на определенном преобразовании предшествующих шагов. Примером может служить задание функции вычисления факториала fact [n], представленное ниже.
Операция |
Комментарий |
fact[n_] :=n*fact[n-l] |
Задана рекурсивная функция факториала |
fact[l]=l |
Выполнена инициализация функции |
1 |
|
fact[3] |
Вычислено значение 3! |
6 |
|
fact[10] |
Вычислено значение 10! |
3628800 |
|
?fact[l] |
Выполнена проверка определения функции |
Global ' fact |
|
fact[l] = 1 |
|
fact[n_] :=nfact[n-l] |
Обратите внимание на использование знака вопроса перед именем функции в конце примера, показанного выше. Оно позволяет вывести текст декларации (определения) функции. После объявления функция может быть использована в последующих ячейках документа.