lzkd 发表于 2010-3-10 11:00:04

一些递归资料

非专业人氏出身,为了玩MUD努力的在学习编程知识。最近这几天在琢磨递归,据说这是玩好MUD省不了的一步,之前都觉得递归这东西很可怕的样子。不过,现在是到了不得不学的时候了,没办法,硬着头皮上吧。找了点资料学了一下,好象也不是很难嘛。
  把自己觉得不错的资料放上来,一个是留档,另一个是可以让不懂的人也可以多个学习机会

这段代码会如数输出 1 到 10 的数字。在 static_function 函数第二次运行时,变量 i 由于是静态变量,所以仍被保留不被释放,进而可以得到自增的值。header("Content-type: text/plain");
function static_function () {
    static $i = 0;
    if ($i++ < 10) {
      echo $i . "\n";
      static_function();
    }
}
static_function();很多时候我们要遍历一个文件夹里面的所有目录,列出里面所有的文件,PHP本身自带的有一个readdir的函数,不过只能读取当前的目录,根据这个函数,我写了另外一个函数,用来实现我的需求。函数的原理很简单,主要就是用了一下递归调用。

这个函数还可以继续做一些改进,加入一些文件夹或文件的图标什么的,这样就可以做成更强大的一个函数了,有兴趣的朋友可以扩展的一下。function file_list($path){
    if ($handle = opendir($path)) {
      while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
                if (is_dir($path."/".$file)) {
                  echo $path.": ".$file."<br>";//去掉此行显示的是所有的非目录文件
                  file_list($path."/".$file);
                } else {
                  echo $path.": ".$file."<br>";
                }
            }
      }
    }
}

[ 本帖最后由 lzkd 于 2010-3-10 11:02 AM 编辑 ]

lzkd 发表于 2010-3-10 11:03:26

这个页面有一个非常漂亮的图,是用php+递归画的,有兴趣可以看看

http://www.gracecode.com/archives/1454/

laobeng 发表于 2010-3-10 11:08:19

我只知道秭归

wraith 发表于 2010-3-10 11:17:01

我知道当归!

weirz 发表于 2010-3-10 12:08:46

以上都不知道

zgbl 发表于 2010-3-10 12:38:10

我的理解,大白话说递归就是说函数内部再次调用这个函数以实现一些复杂的循环……

lzkd 发表于 2010-3-10 13:33:18

哇。。这个居然是我在北侠的第30个精华。。。。。
真没想到,第30个精华是这篇。

zgbl 发表于 2010-3-10 14:35:26

我日,30个,你不是人……

hash 发表于 2010-3-10 14:38:54

。。。容易想歪

seagate 发表于 2010-3-10 16:41:10

递归很简单的,大学学过计算机方面比如C语言之类课,应该就会讲到
页: [1] 2
查看完整版本: 一些递归资料