This is a classical example that combines lazy (actually the real name is non-strict) lists and recursion.

You can find an explanation of such a combination here

http://stackoverflow.com/questions/6273621/understanding-a-recursively-defined-list-fibs-in-terms-of-zipwith

Silvio