A方法调用B方法,我们很容易理解,递归就是:A方法调用A方法,也就是自己调用自己
递归的好处
利用递归可以用简单的程序解决一些复杂的问题,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可以描述出解题过程所需要的多次重复计算,大大地较少了程序的代码量,递归的能力在于用有限的语句来定义对象的无限集合。
public class s01 {
public static void main(String[] args) {
test();
}
public static void test(){
test();
}
}
//使用此代码可以重复执行test()方法
最后会提醒一个StackOverflow错误,即栈溢出,可以暂且简单理解为内存不够,以后会详细讲解栈
用递归实现阶乘
通过这个案例我们可以更好地理解递归及其运作方法
实现功能:用户可以输入一个数,用n表示,输出为n!的值
import java.util.Scanner;
public class jiecheng01 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);//创建一个扫描器变量,用于接收键盘的输入
System.out.print("请输入一个数:");//提示用户输入一个数
int n= scanner.nextInt();//让用户输入一个数,并用n来接收
int jieguo=test(n);//用一个新的变量接收结果
System.out.println(jieguo);//输出结果值
}
public static int test(int a) {
if(a==1){
return 1;
}
else{
return a*test(a-1);
}
}
}
图解该递归的原理:
这样,我们就理解了递归的原理了