Factorial: Difference between revisions

Content added Content deleted
m (fixed incorrect placement)
Line 6,041: Line 6,041:
=={{header|langur}}==
=={{header|langur}}==
=== Folding ===
=== Folding ===
<syntaxhighlight lang="langur">val .factorial = fn(.n) fold(fn{*}, 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 = fn(.x) { if(.x < 2: 1; .x * self(.x - 1)) }
<syntaxhighlight lang="langur">
writeln .factorial(7)</syntaxhighlight>
val factorial = fn x: if(x < 2: 1; x * self(x - 1))
writeln factorial(7)
</syntaxhighlight>


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


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


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


{{out}}
{{out}}