递归经典例题

1.求斐波那契数列

public class RecursionDemo {

// 递归求斐波那契数列第n项

public static int fibonacci(int n) {

// 边界条件:第1项和第2项均为1

if (n == 1 || n == 2) {

return 1;

}

// 递归公式:F(n) = F(n-1) + F(n-2)

return fibonacci(n - 1) + fibonacci(n - 2);

}

public static void main(String[] args) {

// 测试:输出前10项斐波那契数列

System.out.println("斐波那契数列前10项:");

for (int i = 1; i <= 10; i++) {

System.out.print(fibonacci(i) + " ");

}

// 输出结果:1 1 2 3 5 8 13 21 34 55

}

}

2.求两数之间最小公倍数

public static int gcd(int m,int n){

if(n==0)

return m ;

return gcd(n,m%n);

}

3.递归进行插入排序

从数组最后一个往前插入排序,对数组排序等价于对0-倒数第二个元素这部分排序,再把最后一个元素插进去

public static void insertSort(int arr[],int k){

if(k==0){

return;}

insertSort(int arr[],int k-1);

int x = arr[k];

int index = k-1;

while((index>-1)&&(x<arr[index])){

index--;

}

while()

}

3.汉诺塔问题

1、找到一种划分方法

2、找到递推公式或者等价转换

都是父问题转化为求解子问题

根据参数变化的趋势,对边界进行控制,适时终止递归

1-N从A移动到C,B作为辅助

等价于:

1、1~N-1从A移动到B,C为辅助

2、把N从A移动到C

3、1~N-1从B移动到C,A为辅助

public class TowerOfHanoi {

public static void main(String[]args)

printHanoi Tower( 3,A,B,C)

//将N个盘子从source移动到target的路径的打印

N:初始的N个从小到达的盘子,N是最大编号

source :原始柱子

auxiliary :辅助的柱子

target :目标柱子

static void printHanoiTower(int N, String source, String auxiliary, String target){

if(N==1){

System.out.println("move"N+"from"+source+" to"+target);

return;

} else{

//把1~N-1个盘子移到辅助盘上

printHanoiTower( N-1,source, target,auxiliary);

//N可以顺利到达target

System.out.println("move+N+"from"+source +" to"+target);

//将N-1个盘子挪到target

printHanoiTower( N-1,auxiliary ,source,target);

}}

相关推荐
燃于AC之乐1 小时前
我的算法修炼之路--4 ———我和算法的爱恨情仇
算法·前缀和·贪心算法·背包问题·洛谷
Boilermaker19926 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
Cherry的跨界思维6 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
MM_MS6 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
独自破碎E7 小时前
【二分法】寻找峰值
算法
alonewolf_997 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子7 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
sheji34167 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java
mit6.8247 小时前
位运算|拆分贪心
算法
ghie90908 小时前
基于MATLAB的TLBO算法优化实现与改进
开发语言·算法·matlab