Discuss / Python / 学习记录

学习记录

Topic source

官总gg

#1 Created at ... [Delete] [Delete and Lock User]

递归方法其实思路本质也就是 “分治”,把一个大的问题分成一层层小的子问题处理。

1. 基线条件(递归出口):A上只有一个盘子,则直接放到C上

if n == 1:

    print(a, '-->', c)  

2. 递归条件(缩小问题规模):A上不只一个盘子,把n-1个盘子放到B上,再把最后一个放到C,最后把B上的盘子再放回C

else:

    move (n-1, a, c, b) 

    print (a, '-->', c)

    move (n-1, b, a, c)

我为什么会想到move(n-1, a, c, b)这种调用函数的方法?首先既然move(n, a, b, c)函数的意义是:将a上的n个盘子,借用b,最终全放到c上;那么move(n-1, a, c, b)同理可得就是将a上的n-1个盘子,借助c,全部放到b上。


  • 1

Reply