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
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- php7 读取php.ini[4]
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- 简单好用的PHP分页类
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表