PHP递归函数用法

递归函数即为自调用函数,在函数体内直接或间接进行自调,但需要设置自调的条件,若满足条件,则调用函数本身,若不满足则终止本函数的自调,然后把流程的主控权返回给上一层函数执行。

代码示例

<?php //声明一个函数,用于测试递归 function test($n){ echo $n." "; //在函数开始输出参数的值 if($n>0){ //判断参数是否大于0 test($n-1); //如果参数大于0则调用自己,并将参数减1后再次传入 }else{ //判断参数是不大于0 echo " "; } echo $n." "; } test(10); //调用test函数将整数10传给参数?>

首先思考一下,这个例子最终的输出结果是什么?

好,来看一下本函数输出的结果:

10 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10

怎么样,不知道这个结果是否跟设想的一样呢?

步骤讲解

第一步,执行test(10),echo 10,然后因为10>0,执行test(9),后面还有没来得及执行的echo 10

第二步,执行test(9),echo 9,然后因为9>0,执行test(8),同样后面还有没来得及执行的 echo 9

第三步,执行test(8),echo 8,然后因为8>0,执行test(7),同样后面还有没来得及执行的 echo 8

第四步,执行test(7),echo 7,然后因为7>0,执行test(6),同样后面还有没来得及执行的 echo 7

第五步,执行test(6),echo 6,然后因为6>0,执行test(5),同样后面还有没来得及执行的 echo 6

………..

第十步,执行test(0),echo 0,此时0>0的条件不满足,不在执行test()函数,而是echo “”,并且执行后面的 echo 0

10 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10

推荐教程:《PHP教程》

php递归函数的用法,PHP递归函数用法相关推荐

  1. (COPY)document.all和document.getElementById用法 document.all用法:

    (COPY)document.all和document.getElementById用法 document.all用法: <html>     <body>       < ...

  2. JObject 用法 、JProperty 用法、JArray 用法 Linq 转 Json

    转: JObject 用法 .JProperty 用法.JArray 用法 Linq 转 Json 1.使用LINQ to JSON前,需要引用Newtonsoft.Json的dll和using Ne ...

  3. python中递归函数写法_python中递归函数如何创建

    递归函数是编程技术之一,这意味着你的程序包含你自己调用的函数.与迭代函数一样,在多次执行类似处理时可以使用递归函数,但递归函数可以通过用简单的代码替换它们来处理更复杂的问题.本篇文章我们就来看看pyt ...

  4. C语言task的用法,C# Task 用法

    C# Task 的用法 其实Task跟线程池ThreadPool的功能类似,不过写起来更为简单,直观.代码更简洁了,使用Task来进行操作.可以跟线程一样可以轻松的对执行的方法进行控制. 顺便提一下, ...

  5. mysql日期函数之DATEDIFF() if()用法 case when用法

    mysql日期函数之DATEDIFF() if()用法 case when用法 背景: 用户密码七天后会过期,用户修改密码时会同步添加修改时间进数据库, 登录时校验用户是否需要修改密码, 一开始想的时 ...

  6. c语言(vd6.0) sleep函数用法 及delay用法

    c语言(vd6.0) sleep函数用法 及delay用法 悬赏分:20 | 解决时间:2009-5-20 20:56 | 提问者:杨筱硕 请注明头文件 2个函数都要举例 最佳答案 1.函数名: de ...

  7. C++基础用法—冒号的用法

    C++基础用法-冒号的用法 一.用法一:继承 1.1用法:用在class或struct后面 1.2示例代码 二.用法二:赋值 1.1用法:用在成员函数.构造函数后面 1.2示例代码 1.2.1示例代码 ...

  8. guess在Java中用法_guess的用法

    guess有推测;猜中;以为等意思,那么你知道guess的用法吗?下面跟着学习啦小编一起来学习关于guess的用法及相关知识吧,希望对大家的学习有所帮助! guess的用法 guess的用法1:gue ...

  9. 【Access各种类型变量表示】声明模块变量的用法,变量符号用法,文本型变量.日期型变量,数字型变量,数值型变量的符号表示法

    作 者:麥田   ID:11  城市:上海  QQ:3002789054 摘 要:声明模块变量的用法,变量符号用法,文本型变量.日期型变量,数字型变量,数值型变量的符号用法 正 文: 首先需要在模块声 ...

  10. python所有函数用法_python函数用法总结

    空函数 如果想定义一个什么事也不做的空函数,可以用pass语句: def nop(): pass pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码 ...

最新文章

  1. C++知识点30——使用C++标准库(关联容器map及其初始化,赋值,查找,添加,删除与迭代器失效)
  2. Web服务器性能压力测试工具http_load、webbench、ab、Siege使用教程
  3. php四种基础算法:冒泡,选择,插入和快速排序法
  4. mysql 更新 字段 递增_MySQL使用递增变量更新字段
  5. 51Nod 1289 大鱼吃小鱼 栈的简单模拟
  6. 基于Flink CDC打通数据实时入湖
  7. Linux下MongoDB非正常关闭启动异常解决方法
  8. RTCM1005详解
  9. Windows安装Redis新手教程
  10. 科立捷默认频率_科立捷对讲机频率
  11. C# 判断字符串中文汉字
  12. crypto密码学知识大纲
  13. 360极速浏览器Onetab插件存储位置
  14. 关于 JWT、JWS、JWE
  15. 高职计算机教CAD,高职城乡规划专业“Auto CAD计算机辅助设计课程改革设计
  16. android Zxing二维码之读取手机二维码图片
  17. Python:利用cv2模块对图片进行灰度转换
  18. 开机出现error1962:nooperatingsystemfound
  19. mysql安全-数据库审计(audit)
  20. esp8266使用128x128 ST7735屏幕像素偏移问题处理

热门文章

  1. python打印九九乘法表代码
  2. d3js精通教程_d3js从基础到精通第二部分
  3. qlikview 地图插件制作教程
  4. windows server 部署java Web项目
  5. 使用IP-guard补丁分发批处理脚本实现分发补丁
  6. ffmpeg的安装和使用教程
  7. win10台式机前置耳机无声音解决方案
  8. c语言基础--ASCII码表
  9. 计算机网络高校校园网设计思路,网络工程设计与实现程设计高校校园网设计方案.doc...
  10. OpenDrive里XY和ST