Форум сайта python.su
Помогите решить задачу:
Напишите рекурсивную функцию, возводящую число a в степень n. Гарантируется, что все числа “помещаются” в стандартные вещественные (a и ответ) и целые (n) типы.
Входные данные
Вводится 2 числа - a и n (число n может быть отрицательным).
Выходные данные
Необходимо вывести значение a в степени n
Моё решение(python3):
D=input().split()
a=float(D)
n=int(D)
def power(a, n):
if n>0:
if n==0:
a=1
else:
a=a*power(a, n-1)
return a
else:
if n==0:
a=1
else:
a=power(a, n+1)/a
return a
print(power(a, n))
Вроде бы всё правильно, но на сайте 2 теста из 44 не проходит (ошибка во время выполнения программы)
Скажите, пожалуйста, что не так?
Офлайн
>>> def pwr(a, n): ... if n > 0: ... return a * pwr(a, n-1) ... elif n < 0: ... return 1.0 / pwr(a, -n) ... return 1
Офлайн
Такое решение не подойдёт, т.к. значения подаются в одну строку, например:
1 -2
а не в столбик:
1
2
К тому же не думаю что из-за разной подачи данных могут произойти ошибки
P.S. Так: return 1.0 / pwr(a, -n), а не так: a=a*power(a, n-1) тоже пробовал, но разницы никакой
Офлайн