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

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