Question: Is there a way to make the something like the following code work?

```
add = lambda n: (yield n) or add(n+1)

```

(answers don't need to be in functional style)

Answer: 
I'm not sure of the intent of "yield(n) or add(n+1)", but recursive generators are certainly possible. You might want to read the link below to get a grip on what's possible, in particular the section titled "Recursive Generators".

* [Python Generator Tricks](http://linuxgazette.net/100/pramode.html)
Your function seems to me just to be other expression for unbound sequence:

n, n+1, n+2,....

```
def add(x):
    while True:
        yield x
        x+=1

for index in add(5):
    if not index<100: break ## do equivalent of range(5,100)
    print(index)

```

This is not recursive, but I see no need for recursive style here.

The recursive version based on the other answers link, which had generators calling generators, but not recursively:

```
from __future__ import generators

def range_from(n):
    yield n
    for i in range_from(n+1):
        yield i

for i in range_from(5):
    if not i<100: break ## until 100 (not including)
    print i

```