在java的学习中,各位java程序员不仅要有编程的思想,也要时时刻刻积累java语言的各种算法和方法。其中,递归是java方法中的一种,想必看到这篇文章的朋友在前面已经学习掌握了java方法的相关知识点。下面这篇文章主要来学习一下java方法递归的知识。那么什么是java方法递归,递归又该如何实现呢?

Java方法递归是指在一个方法的内部调用自身的过程,以此类推就是java方法递归的理解思想,具体来讲就是把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。另外这个解决问题的函数必须有明显的结束条件,这样就不会产生无限递归的情况了。因此,java方法递归的两个条件就是,一通过递归调用来缩小问题规模,且新问题与原问题有着相同的形式;二存在一种简单情境,可以使递归在简单情境下退出。

我们来研究一下在不使用递归的前提下,完成1到n的求和,这个应该很简单,请看下面代码:

public class RecursionTest02 {
public static void main(String[] args) {
int n = 5;
int result = accumulate(n);
System.out.println("1到" + n + "的和是:" + result);
}
public static int accumulate(int n){
int result = 0;
for(int i = 1;i <= n; i++){
result += i;
}
return result;
}
}

运行结果如下图所示:

java 递归实体 java中的递归如何实现?_java

那么,使用递归应该怎么写呢?请看以下代码:

public class RecursionTest03 {
public static void main(String[] args) {
int n = 5;
int result = accumulate(n);
System.out.println("1到" + n + "的和是:" + result);
}
public static int accumulate(int n){
if(n == 1){
return 1;
}
return n + accumulate(n - 1);
}
}

运行结果如下图所示:

java 递归实体 java中的递归如何实现?_java怎么实现递归函数_02

要知道java方法递归有三个要素:一定有一种可以退出程序的情况;总是在尝试将一个问题化简到更小的规模;父问题与子问题不能有重叠的部分。这是实现java方法递归的条件。

不使用java方法递归和使用方法递归的程序运行结果必然都是相同的,但是java方法递归会使代码更简单清晰,可读性更好。虽然可能java零基础的初学者不太能体会到这两个优点,但在后面的学习中,慢慢懂得在合适的程序中用合适的方法后,就会理解java方法递归的好处和作用了。