python - 从自身内部调用函数

python - calling a function from within itself

我已有的代码适用于接收数学表达式并对其进行计算的机器人。现在我让它做乘法、除法、减法和加法。但问题是我想在括号内建立对括号和括号的支持。为此,我需要 运行 我为不带括号的表达式编写的代码首先用于括号内的表达式。我打算检查 "(" 并将其中的表达式附加到列表中,直到它到达 ")" 除非它首先到达另一个 "(" 在这种情况下我会在列表中创建一个列表.我会减法、乘法和除法,然后将剩下的数字加在一起。

那么可以从内部调用 definition/function 吗?

是的,这是一种称为 recursion 的基本编程技术,它经常用在您描述的那种解析场景中。

只要确保你有一个基本情况,这样当你到达底层时递归就结束了,你不会最终无限地调用自己。

(还要注意 Google 递归时的彩蛋:"Did you mean recursion?")

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

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

这里有一个例子 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) 

For more detail, visit the github gist that was used for this answer

是的,在“python 递归”中是可能的 最好的描述是:“一个物理世界的例子是将两个平行的镜子彼此面对。它们之间的任何物体都会被递归地反射”