您的位置:首页 > 编程语言 > PHP开发

递归:斐波拉契,阿克曼与汉诺塔(php实现)

2017-11-27 20:19 239 查看
1、斐波拉契数列:1,1,2,3,5

function fibonacci($n){
if($n<=0) return 0;
if($n==1||$n==2) return 1;
return fibonacci($n-1)+fibonacci($n-2);
}
for($i=1;$i<5;$i++){
echo fibonacci($i);
echo " ";
}

2、阿克曼函数:双递归(函数及其变量都递归)
A(1,0)=2

A(0,m)=1 m>=0

A(n,0)=n+2 n>=2

A(n,m)=A(A(n-1,m),m-1) n,m>=1

function akm($n,$m) {
if($n==1 && $m==0) return 2;
if($n==0 && $m>=0) return 1;
if($n>=2 && $m==0) return $n+2;
if($n>=1 && $m>=1) return akm(akm($n-1,$m),$m-1);
}3、汉诺塔:
function mov($n,$from,$to) {
echo "No.".$n.':'.$from.'->'.$to."<br/>";
}
function hanoi($n,$x,$y,$z) {/* 以z柱为中转,将n个数从x柱移到y柱 */
if($n>1) {
hanoi($n-1,$x,$z,$y);
mov($n,$x,$y);
hanoi($n-1,$z,$y,$x);
}
else {
mov($n,$x,$y);
}
}
hanoi(3,"a","b","c");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归 php