您的位置:首页 > 编程语言 > PHP开发

PHP递归函数经典算法(斐波那契/阶乘/高斯算法)

2016-05-02 19:12 603 查看
<?php
/*请忽略负数,可自行添加验证*/
//递归算法 求n = 1+2+3+5+8+..+n
function addSum($n){
if($n == 1){
return 1;
}
return addSum($n-1)+$n;
}

//高斯算法 求n = 1+2+3+5+8+..+n
function addSum2($n){
return (1+$n)*$n/2;
}

//迭代算法 求n = 1+2+3+5+8+..+n
function addSum3($n){
$sum = 0;
for($i = 1; $i <= $n; $i++){
$sum += $i;
}
return $sum;
}

//斐波那契数列 求n = 1+2+3+5+8+..+n
function fibonacci($n){
if($n<1)
return -1;
if ($n == 1 || $n == 2) {
return 1;
}
return fibonacci($n-1) +fibonacci($n-2);
}

//递归实现阶乘算法n!=1×2×3×...×n
function factorial($i){
if($i==0){
return 1;
}else{
return $i*factorial($i-1);
}
}

//三维数组递归求和。
function addArray($arr){
//因为要递归,避免局部变量重定义。
static $sum = 0;
//迭代数组所有元素
foreach ($arr as $value) {
//判断如果不是数组,则累加。
if(!is_array($value)){
$sum += $value;
//否则递归函数本身。
}else{
addArray($value);
}
}
return $sum;
}

echo addSum(100)."<br />";//5050
echo addSum2(100)."<br />";//5050
echo addSum3(100)."<br />";//5050
echo fibonacci(10)."<br />";//55
echo factorial(6)."<br />";//720
$arr = array(1,2,3,array(4, array(5,6)));
echo addArray($arr);//21
?>


输出结果:

5050

5050

5050

55

720

21
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php