php之递归调用,递归创建目录

 

/*
递归自身调用自身,每次调用把问题简化,直到问题解决
即:把大的任务拆成相同性质的多个小任务完成
*/
/*
function recsum($n){
	if($n>1){
		return $n + recsum($n-1);
	}else{
		return 1;
	}

}
//递归调用
echo recsum(10).'<br />';
*/

//最先调用,最后返回
//递归:一个函数,自身调用自身,必有终止条件

function sum($n){
	if($n>1){
	echo $n.'<br />';
	return sum($n-1)+$n;//1,3,6,10,15

	} else {
		echo 1 .'<br />';
		return 1;
	}
}

echo sum(5);
/*
分析
sum(1)=1
sum(2)=sum(1)+2;
sum(3)=sum(2)+3
sum(4)=sum(3)+4
sum(5)=sum(4)+5
*/

递归创建目录

<?php
/*
递归创建目录

*/
/*第一种方法
function mk_dir($path) {
	//
	if(is_dir($path)) {
		//
		return true;
	}
	//目录的父目录存在
	if (is_dir(dirname($path))) {
		# code...
		return mkdir($path);
	}
	//父目录不存在,创建父目录
	mk_dir(dirname($path));
	return mkdir($path);
}	

echo mk_dir("d:/a/ac/d/g/d/")?'ok':'fail';
*/

//第二种方法
function mk_dir($path){
	//如果目录已经存在,直接返回
	if (is_dir($path)) {
		# code...
		return true;
	}
	//如果目录不存在,创建
	//父目录不一定存在,
	return is_dir(dirname($path)) || mk_dir(dirname($path))?mkdir($path):false;
}
echo mk_dir('./a/n/d/c')?'ok':'fail';

?>

 

时间: 2024-08-18 19:19:07

php之递归调用,递归创建目录的相关文章

java中父类与子类, 不同的两个类中的因为构造函数由于递归调用导致栈溢出问题

/* 对于类中对成员变量的初始化和代码块中的代码全部都挪到了构造函数中, 并且是按照java源文件的初始化顺序依次对成员变量进行初始化的,而原构造函数中的代码则移到了构造函数的最后执行 */ import static java.lang.System.out; public class PersonDemo { public static void main(String[] args) { //*********测试父类与子类之间的循环调用的问题 out.println("main1&quo

非常精妙的 PHP 递归调用 代码

  <?php // 定义 PI 一分的角度的值 define("PII", M_PI/180); // 新建图像资源,并定义其背景为 白色,前景色为 黑色 $im    = imagecreate(670,500); $white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF); $g     = imagecolorallocate($im, 0x00, 0x00, 0x00); // 从下面实例化的代码可以得知,初始值 $x, $y,

php函数的递归调用

什么是函数的递归调用?就是函数自己调用自己. php文件: <?phpfunction abc($n) { if ($n > 2) { abc(--$n); } echo '$n=' . $n . "<br />";}abc(4);?> 输出结果: $n=2 $n=2 $n=3 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , 递归 , 文件 , 函数 , 结果 输出 函数

PHP递归调用的小技巧讲解

在PHP的实际编码中,当我们需要实现多元数组替换功能时,就会遇到PHP递归调用.那么具体的使用方式是怎样的呢?下面我们将通过一段代码示例来具体分析一下实现这以功能的方法. PHP递归调用实现多元数组替换功能代码示例: < ?php $arr = array(array("< 小刚>","< 小晓>"),"< 小飞>","< 小李>","< 小红>&qu

php递归调用删除数组空值元素的方法

  本文实例讲述了php递归调用删除数组空值元素的方法.分享给大家供大家参考.具体如下: 该函数可以删除数组里的所有空值元素,包含空字符串,空的数组等等. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 function array_remove_empty($arr){ $narr = array(); while(list($key, $val) = each($arr)){ if (is_array($val)){ $val = a

php 函数递归调用实例

  function arrContentReplact($array) { if(is_array($array)) { foreach($array as $k => $v) { $array[$k] = arrContentReplact($array[$k]); } }else { $array = str_replace( array('<', '>'), array('{', '}'), $array ); } return $array; } $arr = array(ar

二叉树递归调用,指针的困惑

问题描述 二叉树递归调用,指针的困惑 void Tree ::creatTree(Node * & p) { T val; cin>>val; if(val=='#') p=NULL; else { p=new Node ; p->data=val; cout<leftchild< creatTree(p->leftchild); creatTree(p->rightchild); } } 我想问的是:在第一次输入非#之后,构造一个节点,给这个结点的dat

算法-递归调用循环的非递归形式

问题描述 递归调用循环的非递归形式 背景:之前在算法书上看到说所有的递归算法都可以写成非递归的形式. 那么遍历一个完全树的所有叶子节点,我看过两个算法,一个是递归调用,非常简单. 还有一个使用了队列:(c++ 和伪代码的混合表示) queue.push(root);//根节点进队 while (!queue.isEmpty()) { queue.push(root->left); queue.push(root->right); if (!queue.top()->hasChild())

c#中,静态函数可以实现正确的递归调用吗?

问题描述 c#中,静态函数可以实现正确的递归调用吗? 菜鸟问题.实际是二个问题:首先,我试了一下,静态函数可以进行自身调用,但其参数无变化,未达到递归目的:所以第二个问题就成为:静态函数无法突现递归作用.各位老师,我的理解对吗?