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

来源:互联网 发布:thinkphp cms开发案例 编辑:程序博客网 时间:2024/06/07 09:34

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");



原创粉丝点击