递归经典例题

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);

}}

相关推荐
沐雪轻挽萤5 分钟前
17. C++17新特性-并行算法 (Parallel Algorithms)
java·开发语言·c++
StockTV17 分钟前
SpringBoot对接黄金白银期货数据API
java·spring boot·后端
扶苏xw18 分钟前
【分组背包】
算法·动态规划
李兆龙的博客23 分钟前
从一到无穷大 #68 Agent Memory 全景:大模型智能体记忆机制的形态、动态与前沿
大数据·人工智能·算法
hsjcjh27 分钟前
窗口函数-详细讲解分析
java·服务器·前端
东北甜妹1 小时前
Redis Cluster 操作命令
java·开发语言
cwplh1 小时前
平衡树学习笔记
数据结构·笔记·学习·算法
wen__xvn1 小时前
天梯赛L2刷题(也就写写水题骗骗自己了)
算法
EllinY1 小时前
扩展欧几里得算法 exgcd 详解
c++·笔记·数学·算法·exgcd
消失的旧时光-19431 小时前
Spring Boot 核心机制之 @Conditional:从原理到实战(一次讲透)
java·spring boot·后端