递归算法

递归算法,程序通过不断调用自身,通过设定临界点,计算出所需要的结果。
汉诺塔算法,操作详细的诠释了递归的精髓,将任务细化。
当前有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);
}

 

posted @ 2014-07-07 18:34  蒋坞村长  阅读(164)  评论(0编辑  收藏  举报