Я пытаюсь дать несколько общих ответов.
1.Рекурсия
Ваша функция является рекурсивной функцией.Это означает, что вы вызываете одну и ту же функцию внутри себя.Простой пример - функция faculty .В рекурсивной функции вам всегда нужно условие, которое останавливает рекурсию.
def faculty(num):
if num <= 1:
return 1
else:
return faculty(num-1) * num
2.Печать против возврата
Мне кажется, у вас возникли проблемы с пониманием разницы между print
и return
оператором.
print : вы печатаете некоторый текст наконсоль, чтобы пользователь мог ее увидеть.Для ПК эта информация совершенно неактуальна.За пределами этой функции она не может работать с информацией, выводимой на консоль.
return : Это значение, которое возвращается при вызове функции.
Я думаю, что этот маленький пример может помочь:
def get_something():
number = 5
return number
x = get_something()
print(x) # In the console: 5
def print_something():
number = 5
print(number) # in the console: 5
v = print_something()
print(v) # in the console: None
# because the function didn't return anything (or to be precise: retured implicitly None)
3.Решение для вас
Если присмотреться, как работает рекурсия.Например, здесь https://medium.freecodecamp.org/how-recursion-works-explained-with-flowcharts-and-a-video-de61f40cb7f9 вы заметите, что вам нужно изменить следующее в вашем коде.Как уже было сказано в комментариях:
return sp(x,y)