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 visualizes recursion tree with animation and draws recursion tree for recursive function. It works with almost any type of recursive function. Just add the recursion-visualiser decorator to your function and let it do the rest of the work.

Installation

The only dependency for recursion 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/'  

The easiest way to install recursion-visualiser package is from pypi

pip install recursion-visualiser

The preferred way to import the class from the package is as:

from visualiser.visualiser import Visualiser as vs

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.visualiser import Visualiser as vs

# Add decorator
# Decorator accepts arguments: ignore_args and show_argument_name
@vs()
def fib(n):
    if n <= 1:
        return n
    return fib(n=n - 1) + fib(n=n - 2)


def main():
    # Call function
    print(fib(n=6))
    # Save recursion tree to a file
    vs.make_animation("fibonacci.gif", delay=2)


if __name__ == "__main__":
    main()

Here are the changes required:

  • Add decorator Visualiser which accepts optional arguments ignore_args, show_argument_name and 'show_return_value'
  • Change every function calls to pass as keyword arguments.
  • Make_animation

The output image are saved as "fibonacci.gif" and "fibonacci.png"

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

enter image description here

Find other examples : here and read more about recursion-visualiser here

TODO:

  • [x] Minimal working version
  • [x] Upload package to pypi
  • [x] Support animation
  • [ ] Support aliasing for function name
  • [ ] Show repeated states
  • [ ] Support node_color, backgroundcolor etc
  • [ ] Refactor
  • [ ] Handle base cases
  • [ ] Make more beautiful trees

Project details


Download files

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

Files for recursion-visualiser, version 1.0.1
Filename, size File type Python version Upload date Hashes
Filename, size recursion_visualiser-1.0.1-py3-none-any.whl (5.6 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size recursion-visualiser-1.0.1.tar.gz (5.2 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page