閱讀347 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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';

?>


 

最後更新:2017-04-04 02:25:10

  上一篇:go #pragma once與 #ifndef的區別
  下一篇:go java操作XML中的占位符