递归:斐波拉契,阿克曼与汉诺塔(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");
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实现)
- 递归:斐波拉契,阿克曼与汉诺塔(php实现)
- 递归:斐波拉契,阿克曼与汉诺塔(php实现)
- 递归:斐波拉契,阿克曼与汉诺塔(php实现)
- 递归:斐波拉契,阿克曼与汉诺塔(php实现)
- 递归:斐波拉契,阿克曼与汉诺塔(php实现)
- 递归:斐波拉契,阿克曼与汉诺塔(php实现)
- 递归:斐波拉契,阿克曼与汉诺塔(php实现)
- 递归:斐波拉契,阿克曼与汉诺塔(php实现)
- 递归:斐波拉契,阿克曼与汉诺塔(php实现)
- 递归:斐波拉契,阿克曼与汉诺塔(php实现)
- 递归:斐波拉契,阿克曼与汉诺塔(php实现)
- 递归:斐波拉契,阿克曼与汉诺塔(php实现)
- 递归:斐波拉契,阿克曼与汉诺塔(php实现)
- php实现汉诺塔问题(递归)
- PHP递归实现汉诺塔问题的方法示例
- 汉诺塔问题的递归实现
- Java 递归实现汉诺塔问题
- 汉诺塔问题--递归实现
- 递归实现汉诺塔问题