Java递归的概念是什么与如何使用
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"Java递归的概念是什么与如何使用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Java递归的概念是什么与如何使用"文章能帮助大家解决问题。
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
中智农互联网科技
湖南永感互联网科技有限公司
科技金融是不是互联网金融
互联网科技有限公司图片
西安互联网科技
奇酷互联网科技公司
广州宏创互联网科技
互联网科技美容
互联网科技公司招聘
温州喔噻互联网科技有限公司
恒银科技与互联网金融
江阴互联网智能科技产品进口
广州新华互联网科技学校电竞方面
翼展科技 首家互联网医院
2021互联网科技公司排名
互联网科技快讯热点
半导体行业属于互联网高科技类吗
同城互联网络科技
互联网科技职业技能培训学校
如何强化互联网金融科技
互联网与科技
科技信息互联网
互联网金融 科技
互联网科技公司发展
齐家互联网科技有限公司
互联网科技的未来发展
启辰互联网科技
国产互联网科技公司
互联网科技创新创业项目
瑞安市蟠桃会互联网科技有限公司