首页 / PHP / 求将一段递归代码改成非递归形式
求将一段递归代码改成非递归形式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了求将一段递归代码改成非递归形式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2284字,纯文字阅读大概需要4分钟。
内容图文
![求将一段递归代码改成非递归形式](/upload/InfoBanner/zyjiaocheng/230/18e5fab7069146b883a11b0fa10a32d4.jpg)
function delRecursive($id,$class_arr)
{
if($id=="") $id=0;
for($i=0;$i<count($class_arr);$i++){
if($class_arr[$i][3]==$id){
$subid=$class_arr[$i][0];
$this->db->delete('tree', array('id' => $id));
$this->db->delete('tree', array('id' => $subid));
delRecursive($subid,$class_arr);
}
}
}
------解决方案--------------------
怎么就不知道与人方便,与己方便的道理呢?
消除递归就是用自己的堆栈,代替系统的堆栈
$ar = array(
array( "1", "0", "顶级分类1", "0", "1"),
array("713", "0", "顶级分类2", "0", "1"),
array("716", "0", "一级子分类1", "713", "1"),
array("718", "0", "顶级分类3", "0", "1"),
array("721", "0", "二级子分类1", "716", "1"),
);
$id = 713;
delRecursive($id, $ar);
func($id, $ar);
function func($id, $class_arr)
{
if($id=="") $id=0;
$st = array($id);
do {
$cnt = count($st);
for($i=0;$i<count($class_arr);$i++){
if(in_array($id = $class_arr[$i][3], $st)){
$subid=$class_arr[$i][0];
if(! in_array($subid, $st)) {
$st[] = $subid;
echo "$id,$subid\n";
// $this->db->delete('tree', array('id' => $id));
// $this->db->delete('tree', array('id' => $subid));
// delRecursive($subid,$class_arr);
}
}
}
}while($cnt < count($st));
}
function delRecursive($id, $class_arr)
{
if($id=="") $id=0;
for($i=0;$i<count($class_arr);$i++){
if($class_arr[$i][3]==$id){
$subid=$class_arr[$i][0];
// $this->db->delete('tree', array('id' => $id));
// $this->db->delete('tree', array('id' => $subid));
echo "$id,$subid\n";
delRecursive($subid,$class_arr);
}
}
}
------解决方案--------------------
$st = array($id);
do {
$cnt = count($st);
for($i=0;$i<count($class_arr);$i++){
if(in_array($class_arr[$i][3], $st)){
$subid=$class_arr[$i][0];
if(!in_array($subid, $st)) {
$st[] = $subid;
$this->DB_MT->delete('tree', array('id' => $id));
$this->DB_MT->delete('tree', array('id' => $subid));
}
}
}
}while($cnt < count($st));
内容总结
以上是互联网集市为您收集整理的求将一段递归代码改成非递归形式全部内容,希望文章能够帮你解决求将一段递归代码改成非递归形式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。