Stuck in Grasshopper-Python Recursion

It sounds like you might be wrestling with the concept of scriptcontext.

not that you have to switch between the two for your script to work, it just may help you understand how Rhino sees geometry VS how Grasshopper “sees” geometry.

see if this helps:

import rhinoscriptsyntax as rs

#you need to store the geometry that GH creates somewhere
circles = []

def RecursiveCircle(pt, r):
    if r == 0:
        pass
    else:
        #recursion loop starts here
        #do something: make circle and add to list (Grasshopper document)
        circles.append(rs.AddCircle(pt, r))
        #change your variable by something
        r -=1
        #call your function again with updated variable
        RecursiveCircle(pt, r)
        #do this until your if statement/condition is met

try:
    #call your function
    RecursiveCircle(pt, r)
except:
    pass

a = circles