From 30c2d7c3a0c51cc3f07ec1b4c9c8ac0168078e9c Mon Sep 17 00:00:00 2001 From: Zhongheng Liu Date: Mon, 9 Dec 2024 12:22:43 +0200 Subject: feat: add recursion example from test --- main.py | 1 - py_test_example.py | 7 +++++++ recursion/recursion.py | 29 +++++++++++++++++++++-------- 3 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 py_test_example.py diff --git a/main.py b/main.py index 8b13789..e69de29 100644 --- a/main.py +++ b/main.py @@ -1 +0,0 @@ - diff --git a/py_test_example.py b/py_test_example.py new file mode 100644 index 0000000..3386a11 --- /dev/null +++ b/py_test_example.py @@ -0,0 +1,7 @@ +def x(n: int): + if ( n == 0 ) or ( n == 1 ): + print(n, end="") + return + x(n // 2) + print(n % 2, end="") +x(255) diff --git a/recursion/recursion.py b/recursion/recursion.py index 11678b3..792fede 100644 --- a/recursion/recursion.py +++ b/recursion/recursion.py @@ -1,5 +1,8 @@ def fact(n: int): return n * fact(n-1) if n != 0 else 1 -def compound(p: int, r: float, y: int): return p if y == 0 else compound(p*r, r, y-1) + +def compound(p: float, r: float, y: int) -> float: + return p if y == 0 else compound(p*r, r, y-1) + def print_fib(a, b, l): print(a) print(b) @@ -11,17 +14,27 @@ def print_next_fib(a: int, b: int, l: int): return print(a+b) return print_next_fib(b, a+b, l-1) + def fib_nth(n: int): if n == 1: return 0 if n == 2: return 1 return fib_nth(n-1) + fib_nth(n-2) -for i in range(1, 10): - print(fact(i)) -print_fib(0, 1, 10) -wage = 3000 -print(fib_nth(5)) + +def draw_underline(l: int): + return '-'*l + +def test(): + range_end = 15 + print(f"Printing series of factorias from 1 to {range_end}\n{draw_underline(20)}") + for i in range(1, range_end): + print(fact(i), end=", " if i < range_end-1 else "\n") + fib_until = 15 + print(f"\n\nPrinting fibonacci sequence to {fib_until}\n{draw_underline(20)}") + print_fib(0, 1, fib_until) + print(fib_nth(5)) + print(compound(36800*4, 1.06, 10) / (43129-3170*12)) def payback(tuition: int, rate: int, salary: int): years = 0 remaining = tuition * 4 @@ -32,6 +45,6 @@ def payback(tuition: int, rate: int, salary: int): remaining *= rate print(f"Year {years}: remaining: {remaining}") print(years) -#payback(36800, 1.06, (43129-3170*12)) -print(compound(36800*4, 1.06, 10) / (43129-3170*12)) \ No newline at end of file +if __name__ == "__main__": + test() -- cgit