Skip to content

Commit 724dd2d

Browse files
author
sarangbishal
committed
Update Examples
1 parent 2cafdec commit 724dd2d

File tree

5 files changed

+59
-26
lines changed

5 files changed

+59
-26
lines changed

Examples.md

Whitespace-only changes.

README.md

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -34,30 +34,37 @@ def fib(n):
3434

3535
Now we want to draw the recursion tree for this function. It is as simple as adding a decorator
3636
```python
37-
# Author: Bishal Sarang
38-
39-
# Import Visualiser class from visualiser.visualiser module
40-
from visualiser.visualiser import Visualiser as vs
41-
42-
# Add decorator
43-
# Decorator accepts arguments: ignore_args and show_argument_name
44-
@vs(ignore_args=['node_num'])
45-
def fib(n, node_num):
46-
if n <= 1:
47-
return n
48-
# Increment decorator class node_count before each function calls
49-
vs.node_count += 1
50-
left = fib(n=n - 1, node_num=vs.node_count)
51-
52-
# node_count is incremented
53-
vs.node_count += 1 right = fib(n=n - 2, node_num=vs.node_count)
54-
return left + right
37+
# Author: Bishal Sarang
5538

56-
# Call function
57-
print(fib(n=6, node_num=0))
58-
59-
# Save recursion tree to a file
60-
vs.write_image("fibonacci.png")
39+
# Import Visualiser class from module visualiser
40+
from visualiser.visualiser import Visualiser as vs
41+
42+
43+
# Add decorator
44+
# Decorator accepts arguments: ignore_args and show_argument_name
45+
@vs(ignore_args=['node_num'])
46+
def fib(n, node_num):
47+
if n <= 1:
48+
return n
49+
# Increment node count
50+
vs.node_count += 1
51+
left = fib(n=n - 1, node_num=vs.node_count)
52+
53+
# Increment node count
54+
vs.node_count += 1
55+
right = fib(n=n - 2, node_num=vs.node_count)
56+
return left + right
57+
58+
def main():
59+
# Call function
60+
print(fib(n=6, node_num=0))
61+
62+
# Save recursion tree to a file
63+
vs.write_image("fibonacci.png")
64+
65+
66+
if __name__ == "__main__":
67+
main()
6168
```
6269
Here are the changes required:
6370

examples/fibonacci.png

4.69 KB
Loading

examples/fibonacci.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,13 @@ def fib(n, node_num):
1717
right = fib(n=n - 2, node_num=vs.node_count)
1818
return left + right
1919

20-
if __name__ == "__main__":
20+
def main():
2121
# Call function
2222
print(fib(n=6, node_num=0))
2323

2424
# Save recursion tree to a file
25-
vs.write_image("fibonacci.png")
25+
vs.write_image("fibonacci.png")
26+
27+
28+
if __name__ == "__main__":
29+
main()

visualiser/visualiser.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def wrapper(*args, **kwargs):
108108
self.graph.add_node(child_node)
109109

110110
# If the function is called by another function
111-
if caller_function_name != '<module>':
111+
if caller_function_name not in ['<module>', 'main']:
112112
print(f"Called {current_function_label} by {caller_func_label}")
113113

114114
parent_node = pydot.Node(name=caller_func_signature, label=caller_func_label)
@@ -117,3 +117,25 @@ def wrapper(*args, **kwargs):
117117
self.graph.add_edge(edge)
118118
return result
119119
return wrapper
120+
121+
@Visualiser(ignore_args=["node_num"])
122+
def fib(n, node_num):
123+
if n <= 1:
124+
return n
125+
Visualiser.node_count += 1
126+
left = fib(n=n - 1, node_num=Visualiser.node_count)
127+
128+
Visualiser.node_count += 1
129+
right = fib(n=n - 2, node_num=Visualiser.node_count)
130+
return left + right
131+
132+
def main():
133+
# Call function
134+
print(fib(n=6, node_num=0))
135+
136+
# Save recursion tree to a file
137+
Visualiser.write_image("fibonacci.png")
138+
139+
140+
if __name__ == "__main__":
141+
main()

0 commit comments

Comments
 (0)