Factorial: Difference between revisions

Content added Content deleted
(Added Asymptote)
Line 6,041: Line 6,041:
=={{header|langur}}==
=={{header|langur}}==
=== Folding ===
=== Folding ===
<syntaxhighlight lang="langur">val .factorial = f fold(f{x}, 2 .. .n)
<syntaxhighlight lang="langur">val .factorial = fn(.n) fold(fn{*}, 2 .. .n)
writeln .factorial(7)</syntaxhighlight>
writeln .factorial(7)</syntaxhighlight>


=== Recursive ===
=== Recursive ===
<syntaxhighlight lang="langur">val .factorial = f if(.x < 2: 1; .x x self(.x - 1))
<syntaxhighlight lang="langur">val .factorial = fn(.x) if(.x < 2: 1; .x * self(.x - 1))
writeln .factorial(7)</syntaxhighlight>
writeln .factorial(7)</syntaxhighlight>


=== Iterative ===
=== Iterative ===
<syntaxhighlight lang="langur">val .factorial = f(.i) {
<syntaxhighlight lang="langur">val .factorial = fn(.i) {
var .answer = 1
var .answer = 1
for .x in 2 .. .i {
for .x in 2 .. .i {
.answer x= .x
.answer *= .x
}
}
.answer
.answer
}
}

writeln .factorial(7)</syntaxhighlight>
writeln .factorial(7)</syntaxhighlight>


=== Iterative Folding ===
=== Iterative Folding ===
<syntaxhighlight lang="langur">val .factorial = f(.n) for[=1] .x in .n { _for x= .x }
<syntaxhighlight lang="langur">val .factorial = fn(.n) for[=1] .x in .n { _for *= .x }
writeln .factorial(7)</syntaxhighlight>
writeln .factorial(7)</syntaxhighlight>