递归是什么?
- 递归就是A方法调用A方法,自己调用自己;
递归结构包括两个部分: - 递归头:什么时候不调用自身的方法。如果没有头,将陷入死循环;
- 递归体:什么时候需要调用自身的方法;
递归有什么作用?
通常可以把一个大型复杂的问题层转化为一个与原问题相似的比较小的问题来解决可以大大减低程序的代码量;
递归怎么使用?
- 直接调用自己
- 例:
public class Demo05 { public static void main(String[] args) { Demo05 test = new Demo05();//test代表Demo05这个类 test.test();//自己调用自己 } //写一个自己的方法test public void test(){ test(); } }
会直接报错,栈溢出;因为没有头所以直接陷入死循环;
-
例:举例一个5!的阶乘。
public class Demo6 {
public static void main(String[] args) {
System.out.println(f(5));
}
//1、先自己写个方法
//1! 1 的阶乘就是他本身这个数字
//2! 2*1
//阶乘 5! 5*4*3*2*1
public static int f(int n){
if (n==1){//如果是他本身就时间return 1;
return 1;
}else{
return n*f(n-1);//只要不等于1就继续减1;
}
}
}
原理图:
1、它会不断的调用自身;比如说5!的阶乘 5*5-1、(变成4) 4*4-1、(变成3)3*3-1、(变成2)2*2-1、(变成1)1 ;
2、变成1之后又继续乘;1*1还是1、1*2(变成2)、2*3(变成6)、4*6(变成24)、5*24(变成120 ) ;
后言~
基数比较大不建议用递归 ~
个人笔记,如有错误还请指正。