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'; ?>
php之递归调用,递归创建目录的更多相关文章
- 关于static 的研究 与递归调用的输出
static的作用 :1.保存上次执行的结果 2.static int m; 这里默认m的初始值为0,即默认 值是0 #include "stdio.h" int fun(int ...
- Python递归调用
递归调用:在调用一个函数过程中,直接或间接又调用该函数本身,称之为递归调用 递归必备的2个阶段 1递推 2回溯 当递推结束后就可以进行回溯了 Python默认设置递归层数为1000 递归示例: de ...
- python 3 递归调用与二分法
递归调用与二分法 1.递归调用 递归调用:在调用一个函数的过程中,直接或间接地调用了函数本身. 示例: def age(n): if n == 1: return 18 # 结束条件 return a ...
- python-生成器迭代器及递归调用
生成器是一个可迭代的对象,它的执行会记住上一次返回时在函数体中的位置.对生成器第二次(或第 n 次)调用跳转至该函数上次执行位置继续往下执行,而上次调用的所有局部变量都保持不变. 生成器的特点:1.生 ...
- day14 迭代器,生成器,函数的递归调用
1.什么是迭代器 迭代是一个重复的过程,但是每次重复都是基于上一次重复的结果而继续 迭代取值的工具 2.为什么要用迭代器 迭代器的优点 ①不依赖于索引取值 ②更节省内存 缺点: 1.不如按 ...
- python生成器,递归调用
生成器 什么是生成器:只要在函数体内出现yield关键字,那么再执行函数就不会执行函数代码,会得到一个结果,该结果就是生成器 生成器就是迭代器 yield的功能 yield为我们提供了一种自定义迭代器 ...
- Python-函数的递归调用
递归调用顾名思义即在函数内部调用函数(自己调用自己),通常用它来计算阶乘,累加等 注意: - 必须有最后的默认结果 if n ==0,(不能一直调用自己,如果没有可能会造成死循环) - 递归参数必 ...
- 关于C++的递归调用(n的阶乘为例)
C++,是入门编程界的一门初期的语言.今天我们浅谈一下有关C++的递归调用. 在没有继承,多态,封装之前,C++几乎看成是C语言,除了一些简单的输出和头文件. 具体代码实现如下: #include&l ...
- java中父类与子类, 不同的两个类中的因为构造函数由于递归调用导致栈溢出问题
/* 对于类中对成员变量的初始化和代码块中的代码全部都挪到了构造函数中, 并且是按照java源文件的初始化顺序依次对成员变量进行初始化的,而原构造函数中的代码则移到了构造函数的最后执行 */ impo ...
随机推荐
- hdu 4405概率dp
#include <cstdio> #include <cstring> #include <iostream> #include <cmath> #i ...
- CPP数组
数组为函数参数,求出一组数中的最大者;
- 使用ECharts报表统计公司考勤加班,大家加班多吗?
最近个项目已经连续加班1个月多,因为公司经常有在外面客户现场或出差的情况,人事每个月初会把上个月的份考勤打卡记录全部发出来,让我们对自己的考勤,突然想到可根据大家打卡时间记录统计每天工作时间,看大家是 ...
- 公司框架将入参Map化
1.Map<String,Object> map = BeanUtil.describe(inDto);
- editplus 使用小技巧
1 editplus怎么设置tab键跳的字符数? Tools -> Preferences -> Files -> Settings & syntax -> Tab/I ...
- 关于GCC的理解——On the understanding of the GCC
GCC 有超过100个的编译选项可用. 这些选项中的许多你可能永远都不会用到, 但一些主要的选项将会频繁用到. 很多的 GCC 选项包括一个以上的字符. 因此你必须为每个选项指定各自的连字符, 并且就 ...
- [转] Creating a Simple RESTful Web App with Node.js, Express, and MongoDB
You can find/fork the sample project on GitHub Hey! This and all my other tutorials will soon be mov ...
- [Redis] C#中使用redis
C#中使用redis 首先打开Visual Studio建立一个简单的控制台应用程序,我这里暂时使用的VS2013的版本. 然后通过Nuget进行安装Redis常用组件ServiceStack.Red ...
- PHP环境搭建所遇到的问题
下午学校的机房搭建PHP组合包appserv开发环境的时候是没有任何问题的,但是到了自己的电脑上以后下砸的32位appserve一直无法正常由浏览器的localhos或者127.0.0.1 进入其ap ...
- Android布局管理器(线性布局)
线性布局有LinearLayout类来代表,Android的线性布局和Swing的Box有点相似(他们都会将容器里面的组件一个接一个的排列起来),LinearLayout中,使用android:ori ...