学习时间:
2020-11-18
学习内容:
递归
概述: 方法定义中调用方法本身的现象
注意事项
1.要有出口,否则就是死递归
2.次数不能太多,否则就内存溢出
递归的思想说白了就是简化问题的过程,最终让一个大问题变成许许多多可以解决的小问题是一种解决问题的好办法。
比如要想求出5的阶乘。虽然我们没有在编程中接触过阶乘,但是5!=4!*5,4!=3!*4…以此类推
演示
用递归的方法求出5的阶乘
public class MyDemo10 {
public static void main(String[] args) {
//用递归的思想求5的阶乘
int num=jieCheng(5);
System.out.println(num);
}
public static int jieCheng(int i) {
if(i==1){
return 1;
}else{
return i*jieCheng(i-1);
}
}
}
演示
兔子问题(斐波那契数列)
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?
由此可见兔子对象的数据是:1 , 1 , 2 , 3 , 5 , 8 …
我们先分析问题:不难看出数列的规律是:从第三项开始,每一项是前相邻两项的和,即m[n]=m[n-1]+m[n-2],并且可以看到第一项和第二项都是1.那么问题就变得简单了
import java.util.Scanner;
public class MyDemo11 {
public static void main(String[] args) {
//用递归的思想求斐波那契数列第n项。
Scanner sc=new Scanner(System.in);
System.out.println("请输入n=");
int n=sc.nextInt();
int sum=tuZi(n);
System.out.println(sum);
}
public static int tuZi(int n) {
if (n == 1||n == 2) {
return 1;
}else{
return tuZi(n-1)+tuZi(n-2);
}
}
}