Skip to main content

A small python package to visualise recursive function on Python. It draws recursion tree

Project description

Recursion Visualiser

Recursion visualiser is a python tool that draws recursion tree for recursive function with very less code changes.

Example

1. Fibonacci

Let's draw the recursion tree for fibonacci number. Here is how the simple code looks like

def fib(n):
	if n <= 1:
		return n
	return fib(n - 1) + fib(n - 2)

print(fib(6))

Now we want to draw the recursion tree for this function. It is as simple as adding a decorator

# Author: Bishal Sarang

# Import Visualiser class from module visualiser
from visualiser import Visualiser as vs

# Add decorator
# Decorator accepts arguments: ignore_args and show_argument_name
@vs(ignore_args=['node_num'])
def fib(n, node_num):
    if n <= 1:
        return n

    # Increment decorator class node_count before each function calls
    vs.node_count += 1
    left = fib(n=n - 1, node_num=vs.node_count)

	# node_count is incremented
    vs.node_count += 1
    right = fib(n=n - 2, node_num=vs.node_count)
    return left + right

# Call function
print(fib(n=6, node_num=0))

# Save recursion tree to a file
vs.write_image("fibonacci.png")

Here are the changes required:

  • Change function signature from fib(n) to fib(n, node_num)
  • Add decorator Visualiser which accepts arguments ignore_args and show_argument_name
  • Before each function calls make sure to increment node_count argument of decorator class
  • Change every function calls to pass as keyword arguments.
  • Write the image

Here is how the recursion tree looks like: enter image description here

2. Make sum

This is taken from one of my answers on quora where I had to manually draw recursion tree. Using Visualiser with very less changes I was able to draw the following tree. You can compare the tree here enter image description here

Installation

The only dependency for recursin visualiser is Graphviz which you can download from here

  • Download graphviz binary
  • Add graphviz bin to path manually or by adding the following line on your script. Change the installation directory according to your installation path
# Set it to bin folder of graphviz
os.environ["PATH"] += os.pathsep +  'C:/Program Files (x86)/Graphviz2.38/bin/'
  • Install all the requirements
pip install -r requirements.txt

See the examples inside example toknow how to use

TODO:

  • Minimal working version
  • Refactor
  • Handle base cases
  • Make more beautful trees

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

recursion-visualiser-0.0.2.tar.gz (3.6 kB view hashes)

Uploaded Source

Built Distribution

recursion_visualiser-0.0.2-py3-none-any.whl (3.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page