递归
过程或函数可能包含对其中另一个过程的调用。其中,子程序可以调用自身。在这种情况下,计算机不关心。他也一如既往,从上到下始终如一地执行他遇到的命令。
如果你还记得数学,那你就会遇到
数学归纳原理。具体如下:
对于每个自然
n 如果
1. 对
n = 1
和
有效
2. 从对任意自然数
n = k
的陈述的有效性来看,它对
n = k + 1 为真。
在编程中,这种技术称为
递归。
递归是一种根据给定的集合本身定义一组对象的方法简单的基本情况。
递归是一种过程(函数),它直接或通过其他过程和函数调用自身。
例子
<前>
def Rec(a):
如果 (a>0): Rec(a-1)
打印(一)
代码>
示意性地,递归的工作可以用流程图表示
Rec() 过程以参数 3 执行。然后,在参数 3 的过程中,调用参数 2 的过程,依此类推,直到调用参数 0 的过程。当调用参数 0 的过程时,递归调用将不再发生,参数为 0 的过程将打印数字 0 并退出。然后控制权返回给参数为 1 的过程,它也通过打印数字 1 来完成它的工作,依此类推。在带有参数 3 的过程之前。
所有被调用的过程都存储在内存中,直到它们完成它们的工作。并发过程的数量称为递归深度
。