public static void main(String[] args) {
// TODO Auto-generated method stub
Hanoi h = new Hanoi();
char a = 'A';
char b = 'B';
char c = 'C';
int count = h.hanoi(3, a, b, c);
System.out.println(count);
}
/**
* 汉诺塔问题
* @param n 阶数
* @param a 起始柱
* @param b 中转柱
* @param c 目标柱
* @return 移动次数
* */
public int hanoi(int n,char a,char b,char c) {
if (n == 1) {
move(a, c);
} else {
hanoi(n-1, a, c, b);
move(a, c);
hanoi(n-1, b, a, c);
}
//汉诺塔的移动次数为(2**n)-1
return (int) Math.pow(2, n)-1;
}
public void move(char a,char b) {
System.out.println(a + "--->" + "b");
}
}
Python求解汉诺塔
i = 1 # 定义全局变量记录次数
def move(n, a, c):
global i
print("第{}步:将编号为{}的盘子从{}--->{}".format(i, n, a, c))
i += 1
def hanoi(n,a,b,c):
#a,b,c分别是三根柱子,n为套在a柱上的圆圈个数
if n == 1:
move(n, a, c)
else:
知其然不知其所以然,大厂常问面试技术如何复习?
1、热门面试题及答案大全
面试前做足功夫,让你面试成功率提升一截,这里一份热门350道一线互联网常问面试题及答案助你拿offer
2、多线程、高并发、缓存入门到实战项目pdf书籍
3、文中提到面试题答案整理
4、Java核心知识面试宝典
覆盖了JVM 、JAVA集合、JAVA多线程并发、JAVA基础、Spring原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB 、Cassandra、设计模式、负载均衡、数据库、一致性算法 、JAVA算法、数据结构、算法、分布式缓存、Hadoop、Spark、Storm的大量技术点且讲解的非常深入
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/162389.html