A package to trace recursive function calls and generate a recursion tree
Project description
Recursion Trace
Overview
recursion_trace
is a Python package that provides a decorator to trace recursive function calls. It generates a visual recursion tree using Graphviz, making it easier to understand and debug recursive algorithms.
Features
- Trace single and mutual recursion.
- Generate a Graphviz plot to visualize the recursion tree.
- Capture function arguments, return values, and recursion depth.
Installation
pip install recursion-trace
Usage
- Decorate the in-usage recursive functions with the decorator
@trace_recursion
Example: Merge Sort
from recursion_trace import trace_recursion, show_recursion_tree
@trace_recursion # use the decorator to trace the recursion stack
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
L = merge_sort(left_half)
R = merge_sort(right_half)
return merge(L, R)
def merge(left, right):
result = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result.extend(left[i:])
result.extend(right[j:])
return result
if __name__ == '__main__':
arr = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_arr = merge_sort(arr)
show_recursion_tree() # display recursion tree
Output:
Dependencies
- graphviz
-
Please read the respective system installation of Graphviz from the linked page
Author
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_trace-0.1.5.tar.gz
(2.6 kB
view hashes)