diff --git a/maths/power_using_recursion.py b/maths/power_using_recursion.py index f82097f6d8ec..7aa5b3669450 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 @@ -23,7 +23,14 @@ def power(base: int, exponent: int) -> float: ... 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: + 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 +39,5 @@ def power(base: int, exponent: int) -> float: 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}")