1. 程式人生 > >Fibonacci(斐波那契)數的兩種演算法實現

Fibonacci(斐波那契)數的兩種演算法實現

1、遞迴演算法實現,如下:

function getNum($n){
	if($n == 0 || $n == 1){
		return 1;
	}
	return getNum($n-1) + getNum($n-2);
}

程式碼簡單,易懂,但是計算速度很慢,當getNum(50)的時候基本程式就會掛掉

第二種遞迴演算法

function fn($a,$b,$n){  
    if($n > 1) {  
        return fn($a+$b,$a,$n-1);  
    }  
    return $a;  
}

2、迴圈實現

function getNum2($n){
	if($n == 0 || $n == 1){
		return 1;
	}
	$arr[] = 1;
	$arr[] = 1;
	for($i = 2; $i <= $n; $i++){
		$arr[$i] = $arr[$i - 1] + $arr[$i-2];
	}
	return $arr[$n];
}

程式碼相對難理解,執行速度快。