Go-汉诺塔递归算法

汉诺塔递归算法

  • 算法实现
// 从 a -> b 经过 c 中转
func Hanoi(size int, a, b, c byte) {
    if size == 1 {
        fmt.Printf("%c -> %c\n", a, b)
    } else {
        Hanoi(size-1, a, c, b)
        fmt.Printf("%c -> %c\n", a, b)
        Hanoi(size-1, c, b, a)
    }
}
  • 测试代码
func main() {
    function.Hanoi(3, 'A', 'B', 'C')
}
  • 结果

A -> B
A -> C
B -> C
A -> B
C -> A
C -> B
A -> B

  • 时间复杂度

O(2^n)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 汉诺塔算法 要想利用递归函数解决问题,一定要完成两个基本的要素:递归的终止条件,递推公式。为了分析得到递归函数,下...
    LeeLom阅读 5,761评论 7赞 7
  • 设A,B,C是3个塔座。开始时,在塔座A上有一叠共n个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编...
    _源稚生阅读 449评论 0赞 1
  • 记得小时候经常讲的一个故事:从前有座山,山上有座庙,庙里有一个老和尚和一个小和尚,一天,老和尚给小和尚讲了一个故事...
    IT可乐阅读 539评论 0赞 3
  • 算法和数据结构 [TOC] 算法 函数的增长 渐近记号 用来描述算法渐近运行时间的记号,根据定义域为自然数集$N=...
    wxainn阅读 1,320评论 0赞 0
  • 25002-兰贺添 今天要分享的一本绘本是《吃书的狐狸》。看到书名就觉得有趣,狐狸吃书? 故事讲述了一个喜欢读书的...
    兰贺添阅读 820评论 0赞 0

友情链接更多精彩内容