那契数列 php,不使用递归求解裴波那契数列

  • Post author:
  • Post category:php


裴波那契数列 1,1,2,3,5,8,13,21…………,一般来说使用递归会使问题简单很多。但是有些时候会要求我们不用递归解决这类问题,比如Lisp这种不支持递归的语言,或者对程序的执行效率要求很高,或者面试等等场合。本文给出一种不使用递归求解裴波那契数列的方案。

下面是递归的解法:

public int sum(int n)

{

if(n<3)

return 1;

else

return sum(n-1) + sum(n-2);

}

不使用递归的话可以用下面的函数实现:

public int sum(int n)

{

if(n<3)

return 1;

else

{

int base1 = 1;

int base2 = 1; int temp;

for(int i=3; i<=n; i++)

{

temp = base2;

base2 += base1;

base1 = temp;

}

return base2;

}

}

PHP程序测试如下:

$origin = 6;

$result = sum($origin);

echo $result;

function sum($n)

{

if($n < 3)

{

return 1;

}

else

{

$base1 = 1;

$base2 = 1;

$temp;

for($i=3; $i <= $n; $i++)

{

$temp = $base2;

$base2 += $base1;

$base1 = $temp;

}

return $base2;

}

}

?>