GeekGogo
2016-10-09 14:19
采纳率: 100%
浏览 1.8k
已采纳

python的汉诺塔递归算法

代码在图片里,我能看懂,但是拿笔验算时有个疑惑,当n=2时,else部份第一行变成hanoi(1,x,z,y),调用hanoi函数打印第一行为A -> B,这我可以理解。但是当n=3时,else部分变成hanoi(2,x,z,y),调用函数继续hanoi(1,x,z,y),按照前面来说应该答应A->B,然而执行结果第一行为A->C,小弟愚笨,望大神解惑图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 当作看不见 2016-10-09 14:48
    已采纳
    hanoi(3,x,y,z)=>n>1执行 hanoi(2,x,z,y)=>n>1 执行hanoi(1,x,y,z)=>n==1输出 printf(x,'--->',z),这里的参数是A,B,C,把A,B,C,代入x,y,z所以第一个输出A--->C
    
    点赞 评论
  • 当作看不见 2016-10-09 14:42

    注意在else下面第一个hanoi(n,x,z,y),看参数顺序不是hanio(n,x,y,z)

    点赞 评论
  • 人马座潜水员 2016-10-10 01:25

    递归时 参数顺序改变了 总结是 奇数层 第一步先移到c 偶数层 第一步先移到b
    原因是每次递归时参数顺序都有变动

    点赞 评论

相关推荐 更多相似问题