有这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21…求第n项的数字。这个问题就是求斐波那契数列的第n项。
/**
* for循环
*
* @param integer $n 数列长度
* @return array
*/
function forcycle($n = 0)
{
$res = [];
for ($i = 0; $i < $n; $i++) {
if ($i === 0) {
$res[] = 0;
continue;
}
if ($i === 1) {
$res[] = 1;
continue;
}
$res[] = $res[$i - 1] + $res[$i - 2];
}
return $res;
}
//
$list = forcycle(12);
print_r($list);
* for循环
*
* @param integer $n 数列长度
* @return array
*/
function forcycle($n = 0)
{
$res = [];
for ($i = 0; $i < $n; $i++) {
if ($i === 0) {
$res[] = 0;
continue;
}
if ($i === 1) {
$res[] = 1;
continue;
}
$res[] = $res[$i - 1] + $res[$i - 2];
}
return $res;
}
//
$list = forcycle(12);
print_r($list);
/**
* 递归循环
*
* @param integer $n 数列长度
* @param integer $i 当前位置
* @param integer $res 数列
* @return array
*/
function recursion($n = 0, $i = 0, $res = [])
{
if ($i >= $n) {
return $res;
}
if ($i === 0) {
$res[] = 0;
} elseif ($i === 1) {
$res[] = 1;
} else {
$res[] = $res[$i - 1] + $res[$i - 2];
}
return recursion($n, ++$i, $res);
}
$list = recursion(12);
print_r($list);
* 递归循环
*
* @param integer $n 数列长度
* @param integer $i 当前位置
* @param integer $res 数列
* @return array
*/
function recursion($n = 0, $i = 0, $res = [])
{
if ($i >= $n) {
return $res;
}
if ($i === 0) {
$res[] = 0;
} elseif ($i === 1) {
$res[] = 1;
} else {
$res[] = $res[$i - 1] + $res[$i - 2];
}
return recursion($n, ++$i, $res);
}
$list = recursion(12);
print_r($list);
//得到一个数组
Array
(
[0] => 0
[1] => 1
[2] => 1
[3] => 2
[4] => 3
[5] => 5
[6] => 8
[7] => 13
[8] => 21
[9] => 34
[10] => 55
[11] => 89
)
//第12项的数字则为$list[12-1] 即为 89。
Array
(
[0] => 0
[1] => 1
[2] => 1
[3] => 2
[4] => 3
[5] => 5
[6] => 8
[7] => 13
[8] => 21
[9] => 34
[10] => 55
[11] => 89
)
//第12项的数字则为$list[12-1] 即为 89。
原创文章,作者:iConan,如若转载,请注明出处:https://www.aspyc.com/archives/805.html