学习笔记--Java中方法递归调用
2022/1/31 22:40:46
本文主要是介绍学习笔记--Java中方法递归调用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java中方法递归调用
public class RecursionTest01{ public static void main(String[] args){ System.out.println("main begin"); // 调用doSome方法 doSome(); System.out.println("main over"); } public static void doSome(){ System.out.println("main begin"); doSome(); // 调用方法自身 System.out.println("main over"); } }
- 在上面的代码中
doSome
的代码片段只有一份public static void doSome(){ System.out.println("main begin"); doSome(); // 这块代码不结束,下一行代码不执行 System.out.println("main over"); }
- 只要调用
doSome
方法就会在栈内存中新分配一块所属内存空间 - 上述程序会产生一个错误【不是异常,是错误
Error
】- java.lang.StackOverflowError
- 栈内存溢出错误
- 错误发生无法挽回,只有一个结果,就是 JVM 停止工作
方法递归的使用
-
什么是递归?
方法自身调用自身
a(){ a(); }
-
递归是很耗费栈内存的,递归算法能不用就尽量不用
-
递归必须有结束条件,不然必定会发生栈内存溢出错误
-
递归即使有结束条件,但也可能发生栈内存溢出错误,因为递归的太深了
public class RexursionTest{ public static void main(String[] args){ int num = 4; System.out.println("sum: " + sum(num)); System.out.println("rexursionSum: " + rexursionSum(num)); } // 求 1~N 的和 public static int sum(int num){ int result = 0; for(int i = 1; i <= num; i++){ result += i; } return result; } // 使用递归,求 1~N 的和 public static int rexursionSum(int num){ if (num == 1){ return 1; } return num + rexursionSum(num - 1); } }
结果:
sum: 10 rexursionSum: 10
感受递归:
public class RexursionTest{ public static void main(String[] args){ int num = 4; System.out.println("------------\nsum: " + sum(num)); } // 使用递归,求 1~N 的和 public static int sum(int num){ System.out.println("sum " + num + " 执行开始"); int result; System.out.println("num: " + num); if (num == 1){ System.out.println("sum " + num + " 执行结束"); return 1; } result = sum(num - 1); System.out.println("result: " + result); result += num; System.out.println("result += num: " + result); System.out.println("sum " + num + " 执行结束"); return result; } }
结果:
sum 4 执行开始 num: 4 sum 3 执行开始 num: 3 sum 2 执行开始 num: 2 sum 1 执行开始 num: 1 sum 1 执行结束 result: 1 result += num: 3 sum 2 执行结束 result: 3 result += num: 6 sum 3 执行结束 result: 6 result += num: 10 sum 4 执行结束 ------------ sum: 10
这篇关于学习笔记--Java中方法递归调用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南