Язык программирования Перфолента.Net - Официальный сайт

 Язык программирования Перфолента.Net - Официальный сайт.

Поиск   
Главная :: О проекте :: Контакты :: Обратная связь :: Благодарности :: ВходГость

   >   >   > 


Пример «Факториал»

Файлы:

  • Синтаксис языка
    • Функции
      • Факториал.перфо

Пример программы на языке программирования Перфо:



//Эта программа написана на языке программирования Перфо
//для демонстрации написания функций и рекурсии 


//Вычисление факториала реализуем с помощью рекурсии

//Способ 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) ПС)
(Вывод пс)



К началу статьи


Вернуться в раздел:
Примеры по языку Перфо

Перейти в раздел:
Примеры
  Поддержи проект!

Вы можете поддержать разработку Перфоленты, перечислив любую удобную сумму, которая пойдет на развитие языка и поддержку инфраструктуры сайта.

  Новости:
      21.01.2026 На сайт добавлена статья "Конструируем класс. События"
      20.01.2026 Опубликован новый релиз 0.4.18.0_NY языка программирования Перфолента.Net
      29.12.2025 Анонс: Новая возможность - разрабатываем веб-сайты, веб-приложения и веб-API на Перфоленте!
      07.06.2025 Небольшие дополнения к документации на сайте - описание атрибута поля &Атомарное
      09.05.2025 На сайте опубликован релиз 0.4.16.0_SE дистрибутива языка программирования Перфолента.Net
      27.04.2025 Дополнена статья про циклы
      04.01.2025 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.15.0_CE
      23.09.2024 Опубликована новая статья: "Конструируем класс. Делегаты."
      30.08.2024 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.14.0
      24.05.2024 Обновлён справочный раздел сайта
      01.07.2023 Новая версия 0.4.13.0 языка программирования Перфолента.Net
       Все новости