首页 > 编程语言 >Java-递归经典题目-汉诺塔

Java-递归经典题目-汉诺塔

时间:2023-12-17 22:31:33浏览次数:38  
标签:柱子 Java 递归 圆盘 大梵天 -- 123 汉诺塔 移动

一、问题

Tower of Hanoi,是一个源于印度的古老传说:大梵天创建世界时做了三根金刚石柱,在一根柱子从上往下按大小顺序摞着64片黄金圆盘,大梵天命令婆罗门把圆盘重新摆放在另一根柱子上,并且规定:

  • 一次只能移动一个圆盘
  • 小圆盘上不能放大圆盘

请使用程序代码模拟圆盘的移动过程,并估算出时间复杂度。

二、思路

  • 假设每根柱子标号a\b\c,每个圆盘用1,2,3...表示其大小,圆盘初始在a,要移动到的目标是c。
  • 如果只有一个圆盘,此时是最小问题,可以直接求解
  • 移动圆盘1 a-->c:

Java-递归经典题目-汉诺塔_程序代码

  • 如果有两个圆盘:
  • 圆盘1 a-->b
  • 圆盘2 a-->c
  • 圆盘1 b-->c

Java-递归经典题目-汉诺塔_程序代码_02

  • 如果有三个圆盘
  • 圆盘 12 a-->b
  • 圆盘 3 a-->c
  • 圆盘 12 b-->c


  • 如果有四个圆盘
  • 圆盘 123 a-->b
  • 圆盘 4 a-->c
  • 圆盘 123 b-->c












标签:柱子,Java,递归,圆盘,大梵天,--,123,汉诺塔,移动
From: https://blog.51cto.com/u_15535912/8863709

相关文章

  • #yyds干货盘点#Java面试题
    1、什么是Nginx?Nginx是一个web服务器和反向代理服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议。2、请列举Nginx的一些特性。Nginx服务器的特性包括:反向代理/L7负载均衡器嵌入式Perl解释器动态二进制升级可用于重新编写URL,具有非常好的PCRE支持3、请解释N......
  • 无涯教程-Java - String toString()函数
    此方法将自身返回一个字符串。StringtoString()-语法publicStringtoString()StringtoString()-返回值此方法返回字符串本身。StringtoString()-示例importjava.io.*;publicclassTest{publicstaticvoidmain(Stringargs[]){StringStr=newS......
  • Java-递归-爆栈问题
    一、递归时出现的错误现使用单路递归的方法进行n到一的求和,用Java代码实现如下://递归求和n+(n-1)+...+1publicclassE06Sum{publicstaticvoidmain(String[]args){longs=sum(15000);System.out.println(s);}//f(n)=f(n-1)......
  • 无涯教程-Java - String toLowerCase(Locale locale)函数
    如果指定Locale则根据Locale将此String中的所有字符转换为小写,否则调用toLowerCase(Locale.getDefault())默认方法。StringtoLowerCase-语法publicStringtoLowerCase(Localelocale)StringtoLowerCase-返回值它返回转换为小写字母的字符串。StringtoLowerCase-示......
  • java基础知识点之一维数组的两个常见小问题
    一:概述在一维数组的使用中,一不小心就会出现错误,尤其是在初学的情况下。在这里我要说明的是两个常见的问题索引越界问题和空指针异常的问题。二:具体说明<1>索引越界问题初学者打眼一看,可能认为这没有错误,但运行之后,程序报错了。这个错误,一不小心就会犯。因为有时候我们会惯性思维的......
  • 链表递归题型
    递归的定义在定义一个过程或函数时出现调用本过程或本函数的成分,称之为递归。若调用自身,称之为直接递归。若过程或函数p调用过程或函数q,而q又调用p,称之为间接递归。递归算法的设计递归的求解过程均有这样的特征:先将整个问题划分为若干个子问题,通过分别求解子问题,最后获......
  • javascript基础
       ......
  • Java加解密【回车换行】坑与解决
    在Java中进行加解密时,经常会遇到回车换行的问题,这可能导致加解密结果不符合预期,引发一系列的错误。本文将探讨在Java加解密中常见的回车换行问题,并提供解决方案,以确保数据的准确性和一致性。一、问题背景在文本数据进行加密时,回车换行字符可能会在不同的操作系统上表示方式不同。例......
  • 无涯教程-Java - String toLowerCase()函数
    将此String中的所有字符转换为小写,这等同于调用toLowerCase(Locale.getDefault())。StringtoLowerCase()-语法publicStringtoLowerCase()StringtoLowerCase()-返回值它返回转换为小写字母的字符串。StringtoLowerCase()-示例importjava.io.*;publicclassTest......
  • 无涯教程-Java - toCharArray()函数
    此方法将此字符串转换为新的字符数组。char[]toCharArray()-语法这是此方法的语法-publicchar[]toCharArray()char[]toCharArray()-返回值它返回一个新分配的字符数组,其长度是此字符串的长度,并且其内容已初始化为包含此字符串表示的字符序列。char[]toCharArray()......