Fibonacci numbers (Logo)

From LiteratePrograms

Jump to: navigation, search
Other implementations: ALGOL 68 | Alice ML | bc | C | C Plus Plus templates | dc | E | Eiffel | Erlang | Forth | FORTRAN | Haskell | Hume | Icon | Java | JavaScript | Lisp | Logo | Lua | Mercury | OCaml | occam | Oz | Pascal | PIR | PostScript | Python | Ruby | Scala | Scheme | Sed | sh | sh, iterative | Smalltalk | T-SQL | Visual Basic .NET

The Fibonacci numbers are the integer sequence 0, 1, 1, 2, 3, 5, 8, 13, 21, ..., in which each item is formed by adding the previous two. The sequence can be defined recursively by

1 \\ \end{cases} ."/>

Fibonacci number programs that implement this definition directly are often used as introductory examples of recursion. However, many other algorithms for calculating (or making use of) Fibonacci numbers also exist.


Recursion

to fib :n
  if :n < 2 [output :n]
  output sum fib :n-1 fib :n-2
end

Tail Recursive

Like Scheme, Logo also optimizes tail recursion.

to fib.loop :n :a :b
  if :n = 0 [output :a]
  output fib.loop :n-1 :b :a+:b
end
to fib :n
  output fib.loop :n 0 1
end
Download code
Views