汉诺塔问题

【问题描述】

汉诺塔问题大家都清楚,这里不再赘述。,完成如下功能:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

有三个圆柱 A、B、C,初始时 A 上有 N 个圆盘,N 由用户输入给出,最终移动到圆柱 C 上。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

每次移动步骤的表达方式示例如下:[STEP 10] A->C。其中,STEP 是步骤序号,宽度为 4 个字符,右对齐。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

请编写代码,获得输入 N 后,输出汉诺塔移动的步骤。

【输入形式】
【输出形式】
【样例输入】

输入:“3”

【样例输出】

输出:"

[STEP 1] A->C

[STEP 2] A->B

[STEP 3] C->B

[STEP 4] A->C

[STEP 5] B->A

[STEP 6] B->C

[STEP 7] A->C

"

【样例说明】
【评分标准】


count = 0
def made (begin, wend, oth, upn):
    global count
    if upn == 1:
        count = 1 +count
        print("[STEP%d] "%count,end='')
        print("%c->"%begin,end='')
        print(wend)
        return
    else:
        made(begin, oth, wend, upn-1)
        made(begin, wend, oth, 1)
        made(oth, wend, begin, upn-1)


n = int(input())
made ('A', 'C', 'B', n)

递归题

你可能感兴趣的:(python)