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