Пример «Факториал»
Файлы:
- Синтаксис языка
- Функции
- Факториал.перфо
- Функции
Пример программы на языке программирования Перфо:
//Эта программа написана на языке программирования Перфо
//для демонстрации написания функций и рекурсии
//Вычисление факториала реализуем с помощью рекурсии
//Способ 1:
//определим факториал как х! = х * (х-1)!
(функция (факториал х)
(если (= х 0)
1
(* х (факториал (- х 1)))
)
)
(Вывод "Результат (факториал 0) = " (факториал 0) ПС)
(Вывод "Результат (факториал 1) = " (факториал 1) ПС)
(Вывод "Результат (факториал 2) = " (факториал 2) ПС)
(Вывод "Результат (факториал 3) = " (факториал 3) ПС)
(Вывод "Результат (факториал 10) = " (факториал 10) ПС)
(Вывод пс)
//Способ 2:
//Вычисление факториала с помощью хвостовой рекурсии.
//Теоретически это более экономный способ, т.к. в отличие от предыдущего,
//НЕ приводит к порождению длинной цепочки отложенных операций умножения,
//которые начнут выполняться только после возврата из последнего рекурсивного вызова.
(функция (факториал2 х)
(факториал2_хвост х 1)
)
(функция (факториал2_хвост х у)
(если (= х 0)
у
(факториал2_хвост (- х 1) (* х у))
)
)
(Вывод "Результат (факториал2 0) = " (факториал2 0) ПС)
(Вывод "Результат (факториал2 1) = " (факториал2 1) ПС)
(Вывод "Результат (факториал2 2) = " (факториал2 2) ПС)
(Вывод "Результат (факториал2 3) = " (факториал2 3) ПС)
(Вывод "Результат (факториал2 10) = " (факториал2 10) ПС)
(Вывод пс)
//Способ 3:
//определим факториал как х! = 1 * 2 * 3 * ... * х
//заметим, что каждый следующий сомножитель на единицу больше предыдущего
//и умножается на предыдущий результат операции произведения
(функция (факториал3 х)
(функция (итерация произведение счетчик)
(если (> счетчик х)
произведение
(итерация (* счетчик произведение) (+ счетчик 1))
)
)
(итерация 1 1)
)
(Вывод "Результат (факториал3 0) = " (факториал3 0) ПС)
(Вывод "Результат (факториал3 1) = " (факториал3 1) ПС)
(Вывод "Результат (факториал3 2) = " (факториал3 2) ПС)
(Вывод "Результат (факториал3 3) = " (факториал3 3) ПС)
(Вывод "Результат (факториал3 10) = " (факториал3 10) ПС)
(Вывод пс)
К началу статьи
Вернуться в раздел:
Примеры по языку Перфо
Перейти в раздел:
Примеры