文章目录
- 递归的概念
- 递归三要素
- 递归demo
- 打印100次“hello word”
- 斐波那契数列
递归的概念
递归算法是一种直接或者间接调用自身函数或者方法的算法。
递归三要素
-
递归条件结束
因为递归是循环调用自身,因此就必须要有结束条件,或者就会OOM。 -
函数的功能
函数的功能具体式做什么的需要清楚。打印?计算?移动位置?… -
函数的等价表达式
递归公式一般是每次执行之间,或者与个数之间的逻辑关系。
递归demo
打印100次“hello word”
package com.xxliao.algorithms.recursion.demo;/*** @author xxliao* @description: 利用递归实现 打印100次 hello word* @date 2024/5/29 23:42*/
public class Demo01 {public static void main(String[] args) {print("hello word",100);}/*** @description 打印 count 次 message 信息* @author xxliao* @date 2024/5/29 23:44*/public static void print(String message,int count) {if(count > 0) {// 递归的结束条件System.out.println(message); // 函数的功能print(message,count-1); //函数的等价关系式}}
}
输出结果:
斐波那契数列
package com.xxliao.algorithms.recursion.demo;/*** @author xxliao* @description: 利用递归实现如下功能:* 斐波那契数列:1、1、2、3、5、8、13、21、34、55.....* 规律:从第3个数开始,每个数等于前面两个数的和* 递归分析:* 函数的功能:返回n的前两个数的和* 递归结束条件:从第三个数开始,n<=2* 函数的等价关系式:fun(n)=fun(n-1)+fun(n-2)* @date 2024/5/29 23:47*/public class Demo02 {public static void main(String[] args) {System.out.println(fun(9));}//用于存储每次的计算结果static int[] sub=new int[10];/*** @description 斐波那契数列 实现,* @author xxliao* @date 2024/5/29 23:49*/public static int fun(int n) {if(n==1 || n==2)return 1;if(sub[n]==0){sub[n]=fun(n-1)+fun(n-2);}return sub[n];}
}
输出结果: