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