递归算法,程序通过不断调用自身,通过设定临界点,计算出所需要的结果。
汉诺塔算法,操作详细的诠释了递归的精髓,将任务细化。
当前有N个,我采用先移动N-1个,那么结果应该是移动N-1个从$X到$Y, 然后移动第N个到$z,这第N个就不需要再动了,然后再将N-1个盘子从$y移动到$z就算结束,
当N-1等于1,直接从$x到$z
function hano($n,$x,$y,$z){ if($n == 1){ echo "move $n from $x to $z ii<br >"; }else{ hano($n-1, $x, $z, $y); echo "move $n from $x to $z <br>"; hano($n-1, $y, $x, $z); } } echo hano(8, ‘a‘, ‘b‘, ‘c‘);
拉波斐尔算法
1,1,2,3,5,8,13,21.。。。。。。。。。。。。。。。
function labfer($n){ if($n <=0){ return 0; }else if($n == 1){ return 1; } return labfer($n-1)+labfer($n-2); }
原文:http://www.cnblogs.com/yahoo85/p/3830250.html