结合塞大象进冰箱
分三步走:
- 【打开冰箱门】搬走第1~(n-1)层
- 【塞大象进去】将第n层搬到 z 上
【关门!】将第1~(n-1)层搬到第n层上面,结束。
搬第N层,就需要把前N-1层搬两次,另外再把第N层搬一次;搬第N-1层,又需要把前N-2层搬两次,然后再把N-1层搬一次,依此类推。
由数学归纳法(Mathematical Induction, MI)
可知,一共需要搬2^N-1次。
但有一个比2^N-1更有效的方法:递归
。让我们看一下3blue1brown
的视频(与二进制联系起来)
Idea from Keith Schwarz, a senior lecturer in Stanford’s CS department斯坦