在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
递归函数在Java语言中得到了广泛的应用,它使得程序的编写过程更加的清晰明了。对Java初学者来讲,递归函数是需要学习的一个重要知识点。本文将附上案例和演示代码,具体为大家介绍递归函数的概念、要素以及和循环的区别。想要学习递归函数的小伙伴,赶紧一起来梳理下相关的知识点吧!

1、递归函数的概念
递归是一种针对使用简单的循环难以编程实现的问題,提供优雅解决方案的技术。简单来说,递归方法是调用自身的方法。在编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。递归函数不能定义为内联函数。
2、实现递归的三要素
(1)一定有一种可以退出程序的情况;
(2)总是在尝试将一个问题化简到更小的规模;
(3)父问题与子问题不能有重叠的部分。
3、Java递归算法案例
Java中的递归函数如果没终止条件会造成死循环,所以递归代码里要有结束自调自的条件。接下来通过一个案例来学习如何使用递归算法。
package QianFeng03;
//阶乘(递归算法)
public class FactorialTest {
public static void main(String[] args){
int result = factor1( 10);
System.out.println(result);
int result1 = factor(10);
System.out.println("递归算法:内存消耗大容易内存溢出"+result1);
}
//---------------递归算法,方法本身调用自己----------------------
public static int factor(int num){
if (num==1)
return 1;
return num*factor(num-1);
}
//---------------普通计算----------------------
public static int factor1(int num){
int result = num;
int i= num-1;
do{
result = result*i;
i--;
}while (i>1);
return result;
}
}
4、递归函数与循环的关系:
(1)联系:
都是通过控制一个变量的边界(或者多个),来改变多个变量为了得到所需要的值,而反复而执行的;都是按照预先设计好的推断实现某一个值求取;(请注意,在这里循环要更注重过程,而递归偏结果一点)
(2)区别:
递归通常是逆向思维居多,“递”和“归”不一定容易发现;而循环从开始条件到结束条件,包括中间循环变量,都需要表达出来。简单的来说就是:用循环能实现的,递归一般可以实现,但是能用递归实现的,循环不一定能。因为有些题目①只注重循环的结束条件和循环过程,而往往这个结束条件不易表达;②只注重循环的次数而不注重循环的开始条件和结束条件。
关于Java递归函数以及案例详解就讲到这里了,希望对刚刚入门学习Java的初学者能够有一定的帮助。关于更多的Java基础学习的内容,尽在博学谷在线IT培训平台!
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
学Java需要先学C语言吗?不学C语言学不好Java吗?
学Java需要先学C语言吗?不学C语言学不好Java吗?对于初学者来说可能常常听到关于Java和C语言这样疑问。虽然很多人都说C语言是基础,但是照样有很多人是从Java学起的,那么下面小编来系统分析一下,Java和C语言到底是什么关系,初学者又该怎样选择性的学习。
12663
2019-07-11 10:34:24
SpringMVC面试题集锦
Spring MVC是spring框架的一个模块,是基于MVC的轻量级Web框架。Spring是目前Web开发中的一个很重要的部分。尤其在企业招聘相关开发者的时候,有大量的笔试和面试题目都与springMVC有关,下面是小编为大家整理的关于springMVC的一些面试题!
8494
2019-11-19 18:29:43
Spring Boot快速入门攻略 新手小白篇
Spring Boot是每个Java的学习者和开发者所必须要熟练掌握的内容,为什么这么说呢?当然是由于它优雅而又清楚简单的优势决定的。本篇文章主要是面向新手小白的Spring Boot快速入门攻略,会带大家快速认识spring boot,然后介绍它的优势和快速入门的具体操作步骤,感兴趣的朋友赶紧一起来看看吧!
9197
2019-11-27 14:20:22
学习Java需要什么基础?零基础能否学会?
如果对学习Java感兴趣,零基础也可以学会,对于相应基础的要求并不高。相对而言有基础学习java更有优势,目前很多人是零转行或有一定基础进一步提升,有基础比较关心的现有的资源对想学java是否有利,或想学习java都要关注哪些知识点。
7478
2020-02-12 15:48:25
优化MySQL数据库的方法有哪些?
优化MySQL数据库是一个很大的目标,要完成这一目标,我们首先要在分析并找出问题的基础上,展开优化的具体思路。因此我们可以先分析影响数据库性能的因素,一般是因为SQL查询速度慢,大量并发占满数据库连接数,CPU时用率过高,服务器硬件损坏,再或者是IO的问题。总的来说,针对不同的问题有与之对应的优化方法。下面我们可以通过一个项目实战,来具体聊聊优化MySQL数据库的方法。
6384
2020-04-10 16:01:52
