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
- Download the graphviz for the respective system (Windows/Mac/Linux)
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:
Example: Mutual Recursive Functions
from recursion_trace import trace_recursion, show_recursion_tree
@trace_recursion # use the decorator to trace the recursion stack
def is_even(n):
if n == 0:
return True
return is_odd(n - 1)
@trace_recursion # use the decorator to trace the recursion stack
def is_odd(n):
if n == 0:
return False
return is_even(n - 1)
if __name__ == '__main__':
is_even(4)
show_recursion_tree()
Output:
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.2.0.tar.gz
(3.2 kB
view details)
File details
Details for the file recursion_trace-0.2.0.tar.gz
.
File metadata
- Download URL: recursion_trace-0.2.0.tar.gz
- Upload date:
- Size: 3.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b4fd176a512309bcdc18ea66b29a385fc8e2fb4f8299de9cd53dd2086de3e6f |
|
MD5 | 7426d8954a7820a81e9074f8ea62fa08 |
|
BLAKE2b-256 | d0ce11f15c3b06b07eda9883ac3ad341207173c4d04bd6ada495b5b01c2905eb |