As I learnt in SICP, tree recursion's complexity grows exponentially with n. If in Haskell I wrote like,
fib n | n <= 1 = n
| otherwise = fib (n-1) + fib (n-2)
Is it true that, since Haskell is lazy, it calculate fib 1
, fib 2
... all once, so the complexity is linear with n?