Understanding and visualizing recursion
Theres a python module for that
Generated with:
from rcviz import callgraph, viz
st= []
@viz
def combi(prefix, s):
if len(s)==0:
return
else:
st.append(prefix+s[0])
combi.track(st = st) #track st in rcviz
combi(prefix+s[0],s[1:])
combi(prefix,s[1:])
return st
print combi("",'abc')
callgraph.render("combi.png")
There are two recursive calls to combi()
in the function. Thus the path of calls is not a single line, but rather a binary tree that forks. What you are seeing is the second half of the tree.
I drew the recursion tree. By Depth First Traversal, the final output is got at the last node. This visualization helps understand what's happening.