1.1 递归
递归,指在当前方法内调用自己的这种现象
public void method(){System.out.println(“递归的演示”);//在当前方法内调用自己method();}
1.2 递归练习
1.2.1 递归求5的阶乘
利用递归求出5!的结果
1.2.1.1 案例代码十一:
package com.itheima_01;/** 需求:求5的阶乘* 5! = 5 * 4 * 3 * 2 * 1; //120* 5! = 5 * 4!; //120* 4! = 4 * 3!; //24* 3! = 3 * 2!; //6* 2! = 2 * 1!; //2* 1! = 1; //1n! = n * (n - 1)!递归:把大问题拆成很多小问题,然后再把小问题拆成更多的小问题,当我们把更多小问题解决了,小问题也解决了随着小问题的解决,大问题也随之解决了在方法本身不断的调用方法自己递归注意事项:递归一定要有出口,内存溢出递归次数不宜过多,内存溢出public void show(int n) {//5//出口if(n == 0) {return;}show(n - 1);}从前有座山,山里有个庙,庙里有个老和尚,老和尚在给小和尚讲故事* 从前有座山,山里有个庙,庙里有个老和尚,老和尚在给小和尚讲故事* 从前有座山,山里有个庙,庙里有个老和尚,老和尚在给小和尚讲故事* 从前有座山,山里有个庙,庙里有个老和尚,老和尚在给小和尚讲故事* 从前有座山,山里有个庙,庙里有个老和尚,老和尚在给小和尚讲故事* ...** 学习编程...找工作...赚钱...娶媳妇...生娃娃学习编程...找工作...赚钱...娶媳妇...生娃娃学习编程...找工作...赚钱...娶媳妇...生娃娃学习编程...找工作...赚钱...娶媳妇...生娃娃学习编程...找工作...赚钱...娶媳妇...生娃娃...**/public class RecurrenceDemo {public static void main(String[] args) {int result = jC(5);System.out.println(result);//120}//求一个数的阶乘public static int jC(int n) {//必须要有出口if(n == 1) {return 1;}else {return n * jC(n - 1);}}}
1.2.2 斐波纳挈数列
有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,
问第二十个月的兔子对数为多少?
1.2.2.1 案例代码十二:
package com.itheima_01;/* * 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子, * 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死, * 问第二十个月的兔子对数为多少? * * * 1 * 1 * 2 * 3 * 5 * 8 * 13 * * 规律:除了第一个月和第二月以外,其余每个月都是前两个月之和 * 斐波那契列数 * */public class RecurrenceDemo2 {public static void main(String[] args) {int result = method(20);//6765System.out.println(result);}public static int method(int n) {//如果是第一个月,只有一对兔子if(n == 1) {return 1;}//如果是第二个月,也只有一对兔子else if(n == 2) {return 1;}else {//如果不是第一个月和第二个月,则兔子的数量是前两个月之和return method(n - 1) + method(n - 2);}}}
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦