RosettaCodeData/Task/Anonymous-recursion/EMal/anonymous-recursion.emal

15 lines
457 B
Plaintext

fun fibonacci ← int by int n
if n < 0
logLine("Invalid argument: " + n)
return -1 # we could raise an error instead
end
fun actualFibonacci ← <int n|when(n < 2,
n, actualFibonacci(n - 1) + actualFibonacci(n - 2))
return actualFibonacci(n)
end
writeLine("F(0) = ", fibonacci(0))
writeLine("F(20) = ", fibonacci(20))
writeLine("F(-10) = ", fibonacci(-10))
writeLine("F(30) = ", fibonacci(30))
writeLine("F(10) = ", fibonacci(10))