递归读取目录_递归计算1-5的和

  • 2,053

用耍赖法打印级联目录

/*
谁会 递归打印级联目录?

思考:我不会打印级联目录,但是,我会打印一层目录,(这个单子可以接)
答:我会 recdir
*/


function recdir($path) {  //读取目录
    $dh = opendir($path);   //打开目录
    
    while(($row = readdir($dh)) !== false) {   //目录赋值给$row
        if($row == '.' || $row == '..') { //. ..不执行
            continue;
        }

        echo $row,'<br />';   //打印$row
     
        // 如果$row还是目录 怎么办?              
        if(is_dir($path . '/' .$row)) {   //判断是目录
            recdir($path . '/' .$row);
        }
       
    }
    
    closedir($dh);

}


recdir('./');

要想理解递归,你必须理解电影中的"慢动作".

要把函数的运行过程理解的非常慢

/*
函数 调用 开始 执行
碰到 return 或 执行到最后结束



function sum($n) {
    if($n>1) {
        
        $tmp = sum($n-1) + $n;
        echo $n,'<br />';
        return $tmp;
    } else {
        echo 1,'<br />';
        return 1;
    }
}

echo sum(5);


我的理解很简单, 就两点
1. 自身调用自身....  (自己分个身去做下一层的事情)
2.分身没有回来之前本体不能动...(结果就是,分身出去以后要一层一层的回来,一直到本体才能动..)

*/


echo "利用递归调用来运算 N 的阶乘<p>";
function facto($n){
    if ($n > 1){
        $r=$n*facto($n-1);}
    else{
        $r=$n;
    }
    return $r;
}
 
echo "当 N 值为 5 时,阶乘为: ".facto(5)."<br>";
echo "当 N 值为 10 时,阶乘为: ".facto(10);
?>

递归读取目录

/***
====笔记部分====
写个函数模仿tree命令
***/


├─



function recdir($path,$lev=1) {  //传当前目录
    $dh = opendir($path);    //打开当前目录
    
    while(($row = readdir($dh)) !== false) {  //循环读取目录
        if($row == '.' || $row == '..') {  //判断如果出现.||..   
            continue;                     //延迟
        }

        echo '├',str_repeat('─',$lev),$row,'<br />';
        
        // 如果$row还是目录 怎么办?              
        if(is_dir($path . '/' .$row)) {
            recdir($path . '/' .$row,$lev+1);
        }
    }
    
    closedir($dh);

}


recdir('./',1);

 

weinxin
我的微信
这是我的微信扫一扫
开拓者博主
  • 本文由 发表于 2016年9月22日10:51:11
  • 转载请务必保留本文链接:https://www.150643.com/351.html
匿名

发表评论

匿名网友 填写信息

评论:4   其中:访客  4   博主  0
    • 威客众包 威客众包 0

      谢谢博主分享

      • 小白苗资源吧 小白苗资源吧 2

        一个菜鸟飘过…

          • 开拓者博主 开拓者博主

            @ 小白苗资源吧 感谢来访,上次你投的稿效果很不错。。。