Факториал
Сегодня потребовалась. Сохраню на всякий случай. Варианта на чистом qpile нет, но нетрудно подправить, отличий практически нет.
Func Factorial(result) Local(i,Factor)
if result < 0 or Floor(result) != result
Return(0)
end if
Factor = 1
for i from 2 to result
Factor = Factor * i
end for
EndFunc(Factor)
Кстати, препроцессор M4 не имеет встроенных средств для вычисления факториала - решается написанием макроса
define(`Factorial',`eval(1 forloop(`i',2,$1,`*i') )')
Например, Factorial(5) будет рекурсивно развернут на этапе препроцессора в число 120.
На QLua факториал считается рекурсивно:
function factorial(n)
if (n == 0) then
return 1
else
return n * factorial(n - 1)
end
end
for n = 0, 16 do
io.write(n, "! = ", factorial(n), "\n")
end
