为了账号安全,请及时绑定邮箱和手机立即绑定

给大家参考下正确答案,以及每行代码的含义

# -*- coding: utf-8 -*-
#给大家参考下正确答案,以及每行代码的含义
def move(n, a, b, c):
    if n ==1:               #如果只有一个圆盘
        print a +' --> ' + c       #可以直接移动到c;
    else:                   #如果a有N个圆盘
        move(n-1,a,c,b)         #首先需要把 (N-1) 个圆盘移动到 b
                                #(注意此处的参数bc顺序换了,因为这次是移到b而不是c)
        print a + ' --> ' + c       #然后,将a的最后一个圆盘移动到c
        move(n-1,b,a,c)         #再将b的(N-1)个圆盘移动到c
                                #(同理,参数b被放到前面,因为是b移到C)
move(4, 'A', 'B', 'C')


正在回答

9 回答

想问一下, move(n-1,b,a,c) 之后,怎么print的,一直 不理解的是,这个输出语句的执行顺序。

0 回复 有任何疑惑可以回复我~

回答的太棒了!

0 回复 有任何疑惑可以回复我~

这个有点感觉是 我只给你说步奏,怎么移动的,具体移动 还是由计算机去移动的。

0 回复 有任何疑惑可以回复我~

多谢楼主!!!好棒棒~~

0 回复 有任何疑惑可以回复我~

解析很棒 楼主赞

0 回复 有任何疑惑可以回复我~

good  job

0 回复 有任何疑惑可以回复我~

从vb转过来的 可能语法上还有些不严谨 见谅

0 回复 有任何疑惑可以回复我~

寫代碼的時候 能不能 把逗號後面的空格 加上  看著難受

0 回复 有任何疑惑可以回复我~
//1,不要去想着递归的执行顺序,这样理解起来容易些
//2,就好像把大象放进冰箱需要几步一样
 public void move(int n,char a,char b,char c){
     if(n == 1){
       System.out.println(a+"-->"+c);
     }else{
       move(n-1,a,c,b);//移动n-1个 由a到b
       move(1,a,b,c);// 将剩下最大的移动到c
       move(n-1,b,a,c);//将第一步移动到b 的移动到 c
     }
 }


0 回复 有任何疑惑可以回复我~
#1

北方的郎n_n

你是java代码~~!
2018-06-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

给大家参考下正确答案,以及每行代码的含义

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信