辛星与您解读PHP的递归

其实递归放到其他编程语言里面可能是初学函数的一个练习题,但是由于PHP的特殊性,我们把它拿出来专门讲解一下,首先说一下什么是递归把,我最早认识递归是求一个数的阶乘,比如我们写一个函数,然后求它的阶乘是多少。

看下面的PHP代码:

<?php 

//求n!的值
function xin($n){
	if($n > 0){
		return $n *xin($n -1 );
	}else{
		return 1;
	}
}

echo xin(4);

它的输出结果当然是24了,什么意思呢,很简单,我们给xin函数传递一个值,如果它比0大,那么就用它去乘以调用$n-1的xin函数的结果,当然,读者可能有N种方式去计算n的阶乘的计算方式,但是无疑,这是用递归来计算的一种。

可以看出,PHP中的递归是很类似与高中学习的数学归纳法的,原理非常简单易懂。它的大致步骤就是首先判断是否需要向下递归,如果是的话,给出一个规则,如果不能,需要及时的返回,把控制权交给它的调用者,基本原理就讲这么多了,还有事,先写到这里。

辛星与您解读PHP的递归,布布扣,bubuko.com

时间: 2024-10-13 03:24:24

辛星与您解读PHP的递归的相关文章

辛星与您解读PHP页面跳转的几种实现方式

由于页面跳转的使用是非常频繁的,因此这里给出几种方式,其实我想我并没有归纳全,毕竟函数那么多,要一下想起来还是特别麻烦的,于是,想到哪里就记到哪里把,等着以后再整理汇总. 第一种方式就是使用header()函数,它是PHP中进行页面跳转非常简便的一种方法,它的实现机制就是把HTTTP协议表头header输出到浏览器,因此,在使用该函数和使用setcookie函数一样,不能有任何的输出,否则无法执行,它的函数原型如下: void header (string string [,bool repla

2014年辛星解读Javascript之DOM之冒泡和捕获

上篇博客提到了Javascript事件绑定函数的三个參数.第一个是一个event.第二个是一个function.第三个是一个布尔变量.它用于指定事件传递的顺序,分为冒泡和捕获两种方式,接下来我们将揭开它的神奇面纱,彻底的解读它. 首先看例如以下代码: <html> <body> <div id = "demo"><p id = "tag">辛星</p></demo> <script typ

2014年辛星解读Javascript之DOM快速入门

在Javascript的知识中,有一个所谓的DOM,即文档对象模型,我们可以通过它来访问HTML文档的元素,当网页被加载的时候,浏览器会去创建DOM,有了这个DOM,我们可以使用Javascript去改变页面中HTML元素和属性,改变CSS样式,能够对页面中的事件作出响应. 首先就是查找一个HTML元素,我们可以通过三种方式来做到,即通过id.标签名和类名,通过id是使用getElementById方法,它是doucument的一个方法,通过标签名则可以使用getElementsByTagNam

2014年辛星解读Javascript之用DOM动态操纵HTML元素

关于DOM,我们了解了可以用DOM操纵HTML的一些属性和样式,还可以为HTML元素绑定事件等等,那么接下来,我们将涉及到用DOM来动态的创建.删除HTML等一些操作,我的核心思路还是重实战,因此,代码示例是肯定少不了的. 不过在使用DOM动态操纵HTML元素之前,我们还是先了解一下DOM树,下面是我从网上找的一个DOM树的图片,它的截图如下: 如果大家学习过"树"这种数据结构,就会很好理解,一个父节点可以包含N个子节点,这些子节点可能是div.p等标签,也可以是属性,还可以是中间的文

辛星解读之php中的重点函数第一节之数组函数

这里我已经写好它的pdf版本了,比本博客更加适合阅读.首先说一下它在百度网盘的下载地址把:百度网盘下载 ,如果左边连接跪了,可以在浏览器中输入:http://pan.baidu.com/s/1qW5AYzM 来下载.然后说一下它在csdn的下载地址,是免积分的奥,下载地址:csdn资源下载处 ,如果连接不起作用,可以在浏览器输入:http://download.csdn.net/detail/xinguimeng/7697309  来手动下载. 好,我们知道php中函数还是很多的,正是这些函数为

2014年辛星解读CSS第八节 使用背景图片

这应该是系统CSS的教程的最后一节了,为什么呢,因为到这一节,我感觉基础知识就已经讲完了,接下来的就是无穷的实战,而实战是很难用知识去讲出来的,靠的是积累,拼的是经验,这些都不是讲出来的. 好,我们下面来说一下用CSS添加背景图片的方式把,它在background属性中指定,可以用url("图片路径")的方式来指定背景图片,如果是repeat,则图片在横向和纵向上平铺,如果是no-repeat,则背景图像不会平铺,只显示一次,如果是repeat-x,那么就在水平方向平铺,如果是repe

2014年辛星Javascript解读第一节

***************概述*************** 1.Javascript是一种原型化继承的基于对象的动态类型的脚本语言,它区分大小写,主要运行在客户端,用户即使响应用户的操作并进行数据的解析和传递. 2.Javascript和Java并没有太多的关系,只是名字重复了四个字母. 3.Javascript的主要功能是进行数据验证.提供网页特效,动态响应用户的操作,我们提到Javascript也通常会提到jQuery和Ajax. ************Javascript的历史**

2014年辛星完全解读Javascript第七节 数组和对象

由于Javascript是脚本语言,因此,使用起来非常方便,数组的使用也是比较简单的,下面我们就主要介绍一下Javascript中数组的介绍,以及上一节中没有完成的对象的介绍. **************数组************** 1.在Javascript中,声明一个数组太简单了,而且它支持三种方式,第一种方式是直接实例化一个Array,然后用下标的形式去添加,但是它不像PHP那样灵活,它不允许不写下标就向里面添加数据,因此,我们指定下标即可. 2.访问数组的成员就向C语言的数组那样访

2014年辛星完全解读Javascript第八节 json

json是JavaScript Object Notation的简写,它是一种轻量级的数据交换格式,而且表达上很容易靠字面去理解.json是用于存储和传输数据的格式,通常用于向服务器端传递数据. *************JSON************** 1.我们上一节介绍了对象,这一节我们将介绍json,json既然是一种数据的传输方式,那么它也必然会有自己的语法规则,它的语法规则如下:由大括号保存对象,由方括号保存数组,数据以键值对的方式存储,而且多个数据之间需要用逗号分开. 2.比如下