Java基础:递归

1|0Java基础:递归

  • 递归就是自己调用自己的方法
  • 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
  • 递归有两个部分:递归头,递归尾
    • 递归头:指明什么时候不调用自身(不指明会陷入【死循环】)——结束
    • 递归尾:指明什么时候调用自身——开始
  • 示例1

无递归头的递归(会陷入死循环,栈溢出 ):

public class Demo05 { public static void main(String[] args) { Demo05 demo05 = new Demo05(); demo05.test(); } public void test() { System.out.print("从前有座山,山上有座庙,庙里有个老和尚对小和尚说:"); test(); } }

输出异常

输出异常

  • 示例2

正常的递归:

public class Demo06 { //5! 5*4*3*2*1 public static void main(String[] args) { System.out.println(f(5)); } public static int f(int n) { return n == 1? 1: n * f(n-1);//return 1时为边界条件 } }

输出

120

__EOF__

本文作者userName
本文链接https://www.cnblogs.com/dt746294093/p/14614469.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   D..T  阅读(81)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示