2016-10-21 4 views
-6

'Я не получаю правильный вывод при подаче (9, -8). Как решить эту проблему без использования функции pow и ** операторанайти `A`, поднятый до` B`, тогда вам нужно умножить A на себя B количество раз

def power(x,y): 
    if x == 0: 
     return x 
    if y == -1: 
     return 1 
    else: 
     return -1 
    if y == 0: 
     return 1 
    a = power(x,y//2) 
    if y%2 == 0: 
     return a*a 
    return a*a*x 
print power(9,-8) 
+3

и что ошибки нет .. ? – Li357

+1

И, пожалуйста, правильно отформатируйте код, особенно важно, когда используется Python –

+0

@AndrewLi. я получаю вывод как: -1.Its не правильный вывод –

ответ

2
def power(x,y): 
    if y == 0: 
    return 1 
    a = power(x, y/2); 
    if y%2 == 0: 
    return a*a; 
    else: 
    return x*a*a; 

x = 9 
y = -8 
if y < 0: 
    print 1.0/(power(x,abs(y))) 
else: 
    print power(x,abs(y)) 

Держите это просто так ..

Мой пау() вычисляет x^y когда y положительна. Если мы хотим найти x^y для отрицательных y, тогда просто напечатайте 1/pow(x,y)

Примечание: @vivin: Правильно ли он отвечает?

Надеюсь, это поможет !!!!

+0

"-power (x, abs (y))" - Не могу понять функцию «-» в режиме питания? –

+1

@vivin: Пожалуйста, дайте тестовый пример, где мой код не работает ?? –

+0

@AndrewLi: Моя ошибка. Добавлено объяснение. Я думал, что код был самоочевидным ..: P –

0

ваш код всегда возвращает -1, если у = -1 (если х == 0) из-за

if y == -1: 
    return 1 
else: 
    return -1 

Keep это простой;!)

def power(x,y): 
    if y==0: return 1 
    if x in [0,1] or y==1 : return x 
    return x*power(x,y-1) if y > 0 else 1.0/power(x,-y) 
Смежные вопросы