как написать степенную функцию, которая использует следующие факты: Чтобы поднять x до степени n (где n - положительное целое число), если n четное, вы можете найти n-ую степень x, возведя в квадрат наполовину эта сила. Например, x ^ 12 - это x ^ 6 * x ^ 6. Для нечетных степеней просто вычтите единицу из степени и умножьте результат для меньшей степени на x. например, x ^ 13 - это x * x ^ 12, то есть x * x ^ 6 * x ^ 6. Рекурсивно, любая сила может быть найдена с меньшим количеством работы, чем умножение х на указанное количество раз.
Я придумал это
power x n
| n == 0 = 1
| x == 0 = 0
| even n = ( power x (n / 2) ) * ( power x (n / 2) )
| odd n = x * ( power x ((n - 1) / 2)) * ( power x ((n - 1) / 2) )
но я получаю сообщение об ошибке ERROR - Unresolved overloading
* Тип: (Интеграл а, Дробный а) => Целое число
* Выражение: мощность 2 2