2025-12-11 14:24:11 +11:00
|
|
|
fun !fib -int -int &n -function &fib
|
|
|
|
|
# Base case: fib(0) = 0, fib(1) = 1
|
|
|
|
|
lesser $n 2 &isBase
|
|
|
|
|
if $isBase %baseCase
|
|
|
|
|
|
|
|
|
|
# Recursive case: fib(n) = fib(n-1) + fib(n-2)
|
|
|
|
|
subtract $n 1 &nMinus1
|
|
|
|
|
call !fib $nMinus1 $fib &fib1
|
|
|
|
|
|
|
|
|
|
subtract $n 2 &nMinus2
|
|
|
|
|
call !fib $nMinus2 $fib &fib2
|
|
|
|
|
|
|
|
|
|
add $fib1 $fib2 &result
|
|
|
|
|
return $result
|
|
|
|
|
|
|
|
|
|
@baseCase
|
|
|
|
|
return $n
|
|
|
|
|
endfun
|
|
|
|
|
|
|
|
|
|
# Main program
|
2026-03-18 15:21:58 +11:00
|
|
|
println "Computing fib(20) recursively..."
|
|
|
|
|
call !fib 20 $fib &answer
|
2025-12-11 14:24:11 +11:00
|
|
|
println "Result:" $answer
|
|
|
|
|
end
|