很多站长朋友们都不太清楚php递归算法实现,今天小编就来给大家整理php递归算法实现,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP 如何递归算法 2、 用PHP递归实现对26个大写英文字母的取值 3、 PHP用函数递归计算1的平方+2的平方+……+20的平方和 4、 php递归的方法求和1+2+3+...+n 5、 用php实现1+(1+2)+(1+2+3)+...+(1+2+...n) 递归求和 6、 php 几种常用的递归 无限极分类 PHP 如何递归算法一般来说,类似这种遍历输出所有文件,大多采用递归算法,这样程序显得比较简洁,其实际执行效率来说,并不见得比其他方法更好。
以下是示例:
function file_list($path)
{
if ($handle = opendir($path))//打开路径成功
{
while (false !== ($file = readdir($handle)))//循环读取目录中的文件名并赋值给$file
{
if ($file != "." $file != "..")//排除当前路径和前一路径
{
if (is_dir($path."/".$file))
{
// echo $path.": ".$file."<br>";//去掉此行显示的是所有的非目录文件
file_list($path."/".$file);
}
else
{
echo $path.": ".$file."<br>";
}
}
}
}
}
用PHP递归实现对26个大写英文字母的取值$charactors = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
shuffle($charactors);
function GetCharactors($samples, $levels, $times, $result = array()) {
$temp = array();
for ($i = 0; $i < $times; $i++) {
$temp[] = array_shift($samples);
}
$result[$levels] = implode('', $temp);
$levels--;
if ($levels > 0) {
shuffle($samples);
$result = GetCharactors($samples, $levels, $times, $result);
}
return $result;
}
print_r(GetCharactors($charactors, 5, 4));
PHP用函数递归计算1的平方+2的平方+……+20的平方和递归:
function square_sum($n, $sum = 0){ if ($n >= 1) { $sum += $n*$n; $n--; square_sum($n, $sum); } return $sum;}echo square_sum(5);//55
非递归:
function square_sum($n){ $sum = 0; for ($i=1; $i <= $n; $i++) $sum += $i*$i; return $sum;}echo square_sum(5);//55
php递归的方法求和1+2+3+...+nphp递归求和1+2+3+...+n的方法如下:
function sum($n) {
if ($n == 1) {
return 1;
}
return $n + sum($n - 1);
}
echo sum(n);
用php实现1+(1+2)+(1+2+3)+...+(1+2+...n) 递归求和function getSum($n) {
if ($n > 1) {
$tempSum = $n * (1 + $n) / 2; // 当然这部分可以拆成另一个递归来求和,如果有需要在说
return $tempSum + getSum(--$n);
}
else {
return $n;
}
}
$result = getSum(20);
php 几种常用的递归 无限极分类/**
* 递归实现无限极分类
* @param $array 分类数据
* @param $pid 父ID
* @param $level 分类级别
* @return $list 分好类的数组 直接遍历即可 $level可以用来遍历缩进
*/
function getTree($array, $pid =0, $level = 0){
//声明静态数组,避免递归调用时,多次声明导致数组覆盖
static $list = []; foreach ($array as $key => $value){ //第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点
if ($value['pid'] == $pid){ //父节点为根节点的节点,级别为0,也就是第一级
$value['level'] = $level; //把数组放到list中
$list[] = $value; //把这个节点从数组中移除,减少后续递归消耗
unset($array[$key]); //开始递归,查找父ID为该节点ID的节点,级别则为原级别+1
getTree($array, $value['id'], $level+1);
}
}
关于php递归算法实现的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php递归算法实现 php递归算法1加到100的详细内容...