Javascript LeeCode选题(汉诺塔求解)

LeeCode选题

汉诺塔递归求解

汉诺塔介绍:

汉诺塔的的图形(从上到下1,2,3个)实现:

这里我们可以看到因为必须要将第n个移动到c区域,而移动到c区域之后,我们的由起始位置a变为起始位置b

move移动函数

第一步:因为代码肯定是由一个位置->另一个位置,我们可以写一个函数move来实现移动

java 复制代码
public class test {
    public static void move(char pos1,char pos2){
        System.out.print(pos1+"=>"+pos2+" ");
        //这里我们如果需要移动就要调用这两个函数
    }

hanoi函数

第二步:main方法中肯定需要我们传入数值参数

定义hanoi函数移动n次,定义三个位置,pos1为起始位置,pos2为中转位置,pos3为终点

1.这里我们的条件是当汉诺塔为1个的时候,我们只需要将其pos1起始位置移动到pos3目的位置

2.当开始第二个第三个的时候我们可以发现每次n-1个的时候都要从c位置挪动到b上促使第n个移动到目标位置

3.这样我们的起始位置由pos1修改为pos2,我们在以pos1为中转到pos3上,

java 复制代码
 public static void hanoi(int n,char pos1,char  pos2,char pos3){
        if(n==1){
            move(pos1,pos3);
            return;
        }
        hanio(n-1,pos1,pos3,pos2);
        move(pos1,pos3);
        hanio(n-1,pos2,pos1,pos3);
    }

main方法测试代码:

java 复制代码
  public static void main(String[] args){
        hanio(1,'A','B','C');
        System.out.println();
        hanio(2,'A','B','C');
        System.out.println();
        hanio(3,'A','B','C');
        System.out.println();

    }

代码实现

相关推荐
考虑考虑2 小时前
JDK26中的Map.ofLazy
java·后端·java ee
云浪3 小时前
Go 并发实战:从零实现一个高并发安全的任务调度器
javascript·后端·go
鶴哥只手遮天5 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天5 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
alexhilton5 小时前
Room Fts4:全文搜索替代 SQL LIKE
android·kotlin·android jetpack
鶴哥只手遮天5 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天5 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天6 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天6 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源
鶴哥只手遮天6 小时前
Spring AI 2.0.1 深度解析-第 03 章 消息体系与 Prompt:不可变模型、`ChatOptions` 与模板渲染
java·人工智能·开源