上QQ阅读APP看书,第一时间看更新
3.6 实战训练
实战1:利用函数解决汉诺塔问题。
汉诺塔问题源于印度一个古老的传说:有三根柱子,首先在第一根柱子从下向上按照大小顺序摆放64片圆盘;然后将圆盘从下开始同样按照大小顺序摆放到另一根柱子上,并且规定小圆盘上不能摆放大圆盘,在三根柱子之间每次只能移动一个圆盘;最后移动的结果是将所有圆盘通过其中一根柱子全部移动到另一根柱子上,并且摆放顺序不变。
下面以移动三个圆盘为例,汉诺塔的移动过程如图3-9所示。
图3-9 汉诺塔移动过程
编写PHP程序,运行结果如图3-10所示。
实战2:报数下船游戏。
编写PHP程序,实现报数下船游戏。30个人在一条船上,超载,需要15人下船。于是人们排成一队,排队的位置即为他们的编号。报数,从1开始,数到9的人下船。如此循环,直到船上仅剩15人为止,问都有哪些编号的人下船了呢?运行结果如图3-11所示。
图3-10 PHP输出汉诺塔移动过程
图3-11 报数下船游戏