Факториал в Factor
Пример для версий
Factor 0.94
В этом примере используется чисто рекурсивное вычисление факториала. Слово factorial
заменяет на стеке n
на n!
с побочным эффектом: выводом всех значений факториалов от 0 до n. После выполнения комбинатора if
на стеке остаются значения n
и n!
, которые словами swap
и over
заменяются на n!
, n
, n!
; два последних значения используются при выводе, первое остается на стеке в качестве возвращенного.
В основной части программы main
приходится добавить drop
значения 16!
, чтобы сигнатура программы оставалась ( -- )
.
USING: formatting kernel math ;
IN: factorial-example
: factorial ( n -- n! )
dup
0 =
[ 1 ]
[ dup dup 1 - factorial * ]
if
swap over "%d! = %d\n" printf ;
16 factorial
drop
Комментарии
]]>blog comments powered by Disqus
]]>