<?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