Я написал две рекурсивные функции (просто чтобы понять рекурсию) для вычисления отрицательного показателя числа. Первый работает отлично, а второй дает странные результаты для некоторых случаев. Например, power_recur (3, -1) выдает 0,33, что правильно, но power_recur (3, -2) выдает 1.
Кроме того, для power_recur2 (3, -2), если я изменяю return 1 / v чтобы просто вернуть v, он возвращает 9. Но когда он возвращается обратно на 1 / v, он возвращает 1, а не 1/9. Я знаю, что могу сделать эту работу, просто используя первую функцию, но я хочу знать, почему 2-я функция (power_recur2) не работает?
Это работает:
def power_recur(x, exp):
if exp < 0:
exp = abs(exp)
if exp == 0:
z = 1
else:
z = x * power_recur(x, exp-1)
return 1/z
if exp == 0:
return 1
else:
return x * power_recur(x, exp-1)
Это не не работает: (выдает 1 для power_recur2 (3, -2))
def power_recur2(x, exp):
if exp < 0:
if exp == 0:
v = 1
else:
v = x * power_recur2(x, exp+1)
return 1/v
if exp == 0:
return 1
else:
return x * power_recur2(x, exp-1)