Sudan function: Difference between revisions
add OCaml
m (→{{header|Quackery}}: replaced tail-end recursion with loop) |
(add OCaml) |
||
Line 652:
sudan(3, 1, 1) = 10228
sudan(2, 2, 1) = 27
</pre>
=={{header|OCaml}}==
<syntaxhighlight lang="ocaml">let rec sudan = function
| 0, x, y -> x + y
| _, x, 0 -> x
| n, x, y -> let x' = sudan (n, x, pred y) in sudan (pred n, x', x' + y)</syntaxhighlight>
<pre>
# sudan (1, 13, 14) ;;
- : int = 245744
# sudan (2, 5, 1) ;;
- : int = 440
# sudan (2, 2, 2) ;;
- : int = 15569256417
</pre>
|