递归

/ / 递归

某些计算机编程语言允许模块或函数自行调用,这种技术称为递归。在递归中,函数α要么直接调用自身,要么调用函数β,后者依次调用原始函数α。函数α称为递归函数。

示例 -  一个调用自身的函数。

int function(int value) {
   if(value < 1)
      return;
   function(value - 1);

   printf("%d ",value);   
}

示例 -  一个调用另一个函数的函数,该函数又再次调用它。

int function1(int value1) {
   if(value1 < 1)
      return;
   function2(value1 - 1);
   printf("%d ",value1);   
}
int function2(int value2) {
   function1(value2);
}

实战

许多编程语言通过堆栈实现递归,通常,每当一个函数( caller )调用另一个函数( callee )或本身作为被调用者时,调用者函数就会将执行控制权转移给被调用者,此传输进程还可能涉及一些要从呼叫者传递到被呼叫者的数据。

无涯教程网

这意味着,调用者函数必须暂时中止其执行,并在执行控件从被调用者函数返回时稍后恢复。在这里,调用者函数需要从其搁置状态的执行点完全开始。它还需要与正在使用的数据完全相同的数据值。为此,为调用者函数创建一个激活记录(或堆栈框架)。

链接:https://www.learnfk.comhttps://www.learnfk.com/data-structures-algorithms/recursion-basics.html

来源:LearnFk无涯教程网

Activation Records

该激活记录保留有关局部变量,形式参数,返回地址以及传递给调用者函数的所有信息。

祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)

精选教程推荐

👇 以下精选教程可能对您有帮助,拓展您的技术视野

循序渐进精通AI编程之道 -〔蒋志伟〕

AI智能办公实战课 -〔李晓华〕

商业思维案例笔记 -〔曹雄峰〕

手机摄影 -〔@随你们去〕

Linux内核技术实战课 -〔邵亚方〕

SRE实战手册 -〔赵成〕

Java业务开发常见错误100例 -〔朱晔〕

深入拆解Tomcat & Jetty -〔李号双〕

程序员的数学基础课 -〔黄申〕

📝 好记忆不如烂笔头,留下您的学习笔记吧!

暂无学习笔记,成为第一个分享的人吧!

您的笔记将帮助成千上万的学习者