递归的执行机制

举报
Java的学习之路 发表于 2022/03/24 11:24:14 2022/03/24
【摘要】 递归递归就是方法自己调用自己 规则 1.执行一个方法的时候,就创建一个新的受保护的独立空间(栈空间) 2.方法的局部变量是独立的,不会互相影响 3.如果方法中使用的是引用数据类型变量,就会共享该引用类型的数据 4.递归必须要有结束条件,不然会出现栈溢出 5.递归占用很大的内存 6.当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就把结果返回给谁,同时当方法执行完毕或者返回的...

递归

递归就是方法自己调用自己

规则

 1.执行一个方法的时候,就创建一个新的受保护的独立空间(栈空间)
 2.方法的局部变量是独立的,不会互相影响
 3.如果方法中使用的是引用数据类型变量,就会共享该引用类型的数据
 4.递归必须要有结束条件,不然会出现栈溢出
 5.递归占用很大的内存
 6.当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就把结果返回给谁,同时当方法执行完毕或者返回的时候,这个方法也就执行完毕了
 

递归调用的执行机制

public class Recursion01 {

//编写一个 main 方法
public static void main(String[] args) {

T t1 = new T();
t1.test(4);//输出什么?  n=2 n=3 n=4
 
}
}

class T {
//分析
public   void test(int n) {
if (n > 2) {
test(n - 1);
}
System.out.println("n=" + n);
}
 
 



}

以上面那一个作为例子:
首先进入main方法,然后在栈内存开辟空间,接着执行main方法里面的代码片段,当main方法调用test()方法的时候,会在栈中另外开辟一个新的空间,然后把实参4传进去

由于,if(n>2)判断条件为true,所以会执行test(n-1)方法,在栈中另外开辟新的空间,直到n=2的时候,判断条件不成立,这个时候控制台输出2,然后n=2的这个方法结束了,这个栈空间就会释放掉,再回到 n = 3 这个空间的text(n -1);继续执行后面的语句,直到程序结束。
在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。