From a2c93f0075f6393d8517797c32face7ce4389019 Mon Sep 17 00:00:00 2001 From: Matsson Date: Tue, 5 Oct 2021 19:56:59 +0200 Subject: [PATCH 1/3] fix: integer power should return int not float --- maths/power_using_recursion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maths/power_using_recursion.py b/maths/power_using_recursion.py index f82097f6d8ec..94a17a4f97c0 100644 --- a/maths/power_using_recursion.py +++ b/maths/power_using_recursion.py @@ -13,7 +13,7 @@ """ -def power(base: int, exponent: int) -> float: +def power(base: int, exponent: int) -> int: """ power(3, 4) 81 From 4137cf7e2e15600643a419cc9ffc7f722f22b38c Mon Sep 17 00:00:00 2001 From: Matsson Date: Tue, 5 Oct 2021 20:06:55 +0200 Subject: [PATCH 2/3] fix: recursion wasnt implemented correctly, and now we throw a valueerror for 0^0 --- maths/power_using_recursion.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/maths/power_using_recursion.py b/maths/power_using_recursion.py index 94a17a4f97c0..5caf4bfb6849 100644 --- a/maths/power_using_recursion.py +++ b/maths/power_using_recursion.py @@ -23,7 +23,16 @@ def power(base: int, exponent: int) -> int: ... for base in range(-10, 10) for exponent in range(10)) True """ - return base * power(base, (exponent - 1)) if exponent else 1 + if exponent == 0: + if base == 0: + raise ValueError("0^0 is undefined!") + return 1 + if exponent == 1: + return base + if exponent % 2 == 0: + return power(base * base, exponent // 2) + else: + return base * power(base * base, (exponent - 1) // 2) if __name__ == "__main__": @@ -32,5 +41,5 @@ def power(base: int, exponent: int) -> int: exponent = int(input("Enter the exponent: ").strip()) result = power(base, abs(exponent)) if exponent < 0: # power() does not properly deal w/ negative exponents - result = 1 / result + result = 1.0 / result print(f"{base} to the power of {exponent} is {result}") From f31e711b8799f6909eb54892a5122b4d51d27c6d Mon Sep 17 00:00:00 2001 From: Matsson Date: Tue, 5 Oct 2021 21:03:25 +0200 Subject: [PATCH 3/3] Remove valueError for 0^0 --- maths/power_using_recursion.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/maths/power_using_recursion.py b/maths/power_using_recursion.py index 5caf4bfb6849..7aa5b3669450 100644 --- a/maths/power_using_recursion.py +++ b/maths/power_using_recursion.py @@ -24,8 +24,6 @@ def power(base: int, exponent: int) -> int: True """ if exponent == 0: - if base == 0: - raise ValueError("0^0 is undefined!") return 1 if exponent == 1: return base