2015-03-16 7 views
5

Код, который у меня уже есть, предназначен для бота, который получает математическое выражение и вычисляет его. Прямо сейчас у меня есть это умножение, деление, вычитание и добавление. Проблема в том, что я хочу построить поддержку круглых скобок и круглых скобок в круглых скобках. Чтобы это произошло, мне нужно запустить код, который я написал для выражений без круглых скобок для выражения внутри скобок. Я собирался проверить "(" и добавить выражение внутри него в список до тех пор, пока он не достигнет ")", если только он не достигнет другого "(", и в этом случае я бы создал список внутри списка. Я бы вычитал, умножал и деля, а затем числа, которые остались, я просто добавляю вместе.python - вызов функции изнутри себя

Так можно ли назвать определение/функцию изнутри самого себя?

ответ

8

Да, это фундаментальный метод программирования, называемый recursion, и он часто используется точно в виде сценариев синтаксического анализа, которые вы описываете.

Просто убедитесь, что у вас есть базовый корпус, так что рекурсия заканчивается, когда вы достигаете нижнего слоя, и вы не можете бесконечно называть себя.

(Также обратите внимание на пасхальное яйцо, когда Google рекурсии: «Вы имели в виду рекурсию?»)

+0

некоторые примеры http://stackoverflow.com/questions/479343/how-can-i-build-a-recursive-function-in -python –

1

Да, @Daniel Роземан сказал это фундаментальный метод программирования называется рекурсией.

им дает вам пример пример этого в питона

def recur_factorial(n): 
    """Function to return the factorial of a number using recursion""" 
    if n == 1: 
     return n 
    else: 
     return n*recur_factorial(n-1) 
Смежные вопросы