关于递归的一点感想

      递归,方法重复调用其自身。对于递归,估计是一开始就没有理解透,经常感觉对递归掌握的不够透,理解的不够深入。最近做的一个网站,要求遍历产品所对应的每一级目录,并取得最大的目录(一级目录)及最小目录(没有子目录了)。当时就自己写了一个递归方法,居然还成功了,呵呵。其实我个人觉得递归就是给定一个结束循环的条件,然后让该方法不停的调用其自身直至满足结束条件。当然这么理解肯定是很粗浅的。下面就举个最简单的例子:

        /**
         * @author 蒋浩钦
         * @param string $CategoryID 目录ID

         * @param array $arr 定义一个空数组

         * @param int $Deep 定义一个整形表示目录深度

         * @param object $conn 数据库连接对象
         */
        public function GetBigCategoryID($CategoryID,&$arr,&$Deep,$conn){
            $sql = "SELECT parent_id FROM zen_categories WHERE categories_id='{$CategoryID}'";
            $query = mysql_query($sql) or die(mysql_error());
            $row = mysql_fetch_array($query);
            if($row["parent_id"] > 0){
                array_push($arr,$row["parent_id"]);
                $Deep++;
                $this->GetBigCategoryID($row["parent_id"],$arr,$Deep,$conn);
            }
        }

      $arr、$Deep这两个都是传引用的。首先传入一个目录ID(CategoryID),查询出它是否还有上一级目录,即parent_id,如果有的话,先将本目录ID压入$arr数组,再将它的上一级目录ID继续当做第一个参数重复调用本方法。直至查到不存在上一级目录ID,那么$arr数组的最后一个即是最大的目录ID。

      这就是递归的一个非常简单的例子。我发现自己在做递归的时候非常容易犯的一个错误就是当其调用自身的时候老是会忘了传部分参数。递归方法内部调用本身时必须保证参数的个数及顺序是一样的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值