Java递归的概念是什么与如何使用
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章主要介绍"Java递归的概念是什么与如何使用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Java递归的概念是什么与如何使用"文章能帮助大家解决问题。
千家信息网最后更新 2025年11月11日Java递归的概念是什么与如何使用
这篇文章主要介绍"Java递归的概念是什么与如何使用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Java递归的概念是什么与如何使用"文章能帮助大家解决问题。
一、递归的概念
1.什么是递归?
递归就是:方法自己调用方法的过程。
使用递归有两个前提条件:
1.有一个趋近与终止的条件。
2.自己调用自己 。
如何实现递归?
最重要的方式是:实现递归,需要去推导出一个递推公式。
思考递归的方式:横向思考,根据递推公式来思考。
代码的执行:是纵向执行。
2.递归讲解
首先看下面代码:
public class TestDemo { public static void func(){ func(); //自己调用自己本身 } public static void main(String[] args) { func(); }}上图代码就是一个简单的递归。
我们再来看一下这个代码的运行结果,
画图讲解:

对于上图这个递归来说,根本没有一个趋于终止的条件,所以这个函数会无休止的递归下去。每次递归都要在栈上开辟内存,一直在栈上开辟内存,总有一次会栈超出。
老铁们要记住:一旦你写的递归有问题,如果是边界没找对一定会报一个

,如果报了这个错误那么一定是你的终止条件有错误,或者是没写终止条件导致了你在递归的过程当中深度过大,最终栈溢出。
如果想要让上述代码正确,我们需要给它加入一个终止条件。
正确代码如下:
public class TestDemo { public static void func(int n){ if(n == 1) return; func(n -1); } public static void main(String[] args) { func(3); }}下面会通过简单的例题让大家更加深入的了解递归
二、递归的使用
例题:递归方式求n的阶乘 画图分析:
实现代码 :
public class TestDemo { public static int fac(int n){ if(n == 1) { return 1; } int tmp = n * fac(n - 1); return tmp; } public static void main(String[] args) { System.out.println(fac(5)); }}代码画图讲解:
例题:求n的和
画图分析:
实现代码:
第一种写法:public class TestDemo { public static int sumAdd(int n){ if(n == 1) { return 1; } int tmp = n + sumAdd(n - 1); return tmp; } public static void main(String[] args) { System.out.println(sumAdd(3)); }} 第二种写法:public class TestDemo { public static int sumAdd(int n){ if(n == 1) { return 1; } return n + sumAdd(n -1); } public static void main(String[] args) { System.out.println(sumAdd(3)); }}例题:递归实现按照顺序打印每一位的数字
画图分析:
实现代码:
public class TestDemo { public static void print(int n){ if(n < 10){ System.out.print(n+" "); }else{ print(n/10); System.out.print(n+" "); } } public static void main(String[] args) { print(1234); }}例题:写一个递归方法,输入一个非负整数,返回组成它的数字之和。例如:输入1729,则应该返回1+7+2+9
实现代码:
public class TestDemo { public static int sumEveryone(int n){ if(n < 10){ return n; }else{ return n + sumEveryone(n/10); } } public static void main(String[] args) { System.out.println(sumEveryone(7910)); } }例题:求第n个斐波那契数是几
画图分析:
实现代码:
第一种方法:递归public class TestDemo { public static int fib(int n){ if(n == 1 || n == 2){ return 1; }else{ return fib(n-2)+fib(n-1); } } public static void main(String[] args) { System.out.println(fib(5)); } 第二种方法:叫做循环(迭代)实现 public static int fib2(int n){ if(n == 1 || n==2){ return 1; } int f1 = 1; int f2 = 1; int f3 = 0; for (int i = 3; i < n; i++) { f3 = f1+f2; f1 = f2; f2 = f3; } return f3; } public static void main(String[] args) { System.out.println(fib2(45)); }关于"Java递归的概念是什么与如何使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
递归
代码
例题
方法
条件
概念
分析
方式
知识
过程
上图
公式
内存
写法
就是
数字
行业
错误
问题
输入
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
滦州专业性软件开发
服务银行的软件开发公司
手机我的世界怎么加服务器
安卓系统提交数据到服务器
wind 万得数据库
有关网络技术的职位
网络安全学院特点
北京java软件开发工资
嘉定区正规软件开发哪家好
vb数据库开发
电脑上怎么操作数据库
网络安全防骗指标
软件开发大一要带电脑吗
软件开发中图标库
如何在虚拟机上创建dns服务器
捏脸男具体数据库
绿湾网络技术有限公司
视易点歌机怎么升级数据库
小学宣传网络安全法方案
旅途奇遇记服务器
数据网络安全证书
表盘市场的服务器异常打不开
放那个服务器
嘉定区专业软件开发服务厂家直销
疫情对网络安全生意的影响
网络安全技术科工作任务
qdate服务器
netcore 动态数据库连接
工控网络安全事件案例
山东省存储服务器零售