python - 从内部调用函数

Oma*_*aad 6 python math recursion expression function

我已经拥有的代码是用于接收数学表达式并计算它的机器人.现在我做它的乘法,除法,减法和加法.但问题是我想在括号内建立对括号和圆括号的支持.为了实现这一点,我需要首先运行我为括号中的表达式而没有括号的表达式编写的代码.我打算检查"("并将其中的表达式附加到列表中,直到它到达a,")"除非它到达另一个,"("在这种情况下我将在列表中创建一个列表.我会减去,乘以和除以我剩下的数字加在一起.

那么可以从内部调用定义/函数吗?

Dan*_*man 13

是的,这是一种称为递归的基本编程技术,它通常用于您描述的解析方案中.

只要确保你有一个基础案例,这样当你到达底层时递归就会结束,而你最终无法自我调用.

(还要注意Google递归时的复活节彩蛋:"你的意思是递归吗?")


Jam*_*and 7

是的,正如 @Daniel Roseman 所说,这是一种称为递归的基本编程技术。

当您想要生成比迭代版本更清晰的解决方案时,应该使用递归而不是迭代。然而,递归通常比迭代更昂贵,因为它需要缠绕,或者每次调用递归函数时将新的堆栈帧推送到调用堆栈上 - 这些操作占用时间和堆栈空间,这可能导致称为堆栈溢出的错误如果堆栈帧消耗了为调用堆栈分配的所有内存。

这是 Python 中的一个示例

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) 
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请访问用于此答案的 github gist