您的位置:首页 > 编程语言 > PHP开发

php笔记6-函数和递归,递推

2016-06-05 21:49 585 查看
function  f1($x, $y){

$re = $x + $y;

return $re;

}

$x = 1;

$v1 = f1($x, 2);

 

函数基础

函数的定义:

function  函数名 (形参1,形参2, .... ){

//形参就是“变量名”;

//。。。。。

}

函数的调用:

函数名(实参1,实参2, .... );

//实参就是“数据值”;

则调用函数,实际最开始发生的事情是:将实参的数据值,传递形参的变量名;

函数调用详细过程:

1, 首先,将实参的数据值,传递形参的变量名

2,程序执行流程进入函数内部开始执行;

3,函数执行结束,就返回到“调用位置”;

3.1:如果函数内部碰到return语句,则也同样立即返回“调用位置”;

函数的参数问题

函数形参的默认值问题

function  函数名 (形参1,形参2=值){。。。};

形参的传值问题

形参,默认情况下都是使用值传递;

但:

使用“&”来修饰一个形参时,就可以实现“引用传递”

此时,对应实参就要求必须是“变量”;

function  函数名 (形参1,&形参2, .... ){。。。}

函数参数的数量问题

可以定义不定个数形参的函数,只要在函数内部使用如下3个“系统函数”来确定实参:

func_get_args(); //返回所有实参(结果是一个数组)

func_get_arg($i); //返回第i个实参(i从0开始算起);

func_num_args(); //返回实参的个数;

函数的返回值问题

function  函数名(){

。。。。。

return  XX数据值;

}

当一个函数有返回值时:函数调用语句就应该当做一个“值”(数据)去使用;

类比:一个变量的作为取值的使用场合有:

$s = $v1; //取得v1的值,并赋值给s

$s = $v1 + 3 ; //取得v1的值,并进行计算

echo $v1; //取得v1的值,并输出;

echo $v1 + 3; //取得v1的值,并进行计算

func1(1, 2, $v1); //取得v1的值,并作为函数调用的实参

则,一个有返回值的函数调用语句,跟上述变量的使用几乎一样!

我们假设函数调用语句为f1(1,2) ,则示例如下:

$s = f1(1,2); //取得f1的返回值,并赋值给s

$s =  f1(1,2) + 3 ; //取得f1的返回值,并进行计算

echo  f1(1,2); //取得f1的返回值,并输出;

echo  f1(1,2)+ 3; //取得f1的返回值,并进行计算

func1(1, 2,  f1(1,2)); //取得f1的返回值,并作为函数调用的实参

但:如果一个函数没有返回值,则其调用形式,几乎只有一种情况(假设为f2):

f2(11,22); //那就是成为一条独立语句!

 

函数的其他形式:

可变函数:就是使用一个变量来代表函数名;

$s = “f1”; //一个字符串而已;

$s(); //其实是在调用函数f1——当然,前提是有该函数;

匿名函数

形式1: 

$f1 = function (形参.....){。。。。};

$f1(); //调用该匿名函数;

形式2:直接就当做“其他函数”的一个实参来使用,其调用是在“其他函数”内部进行。

func3(1, 2, function (形参.....){。。。。}  )  ;
//这里其实是调用函数func3

变量的作用域问题

3个作用域,对应3种范围的变量:

局部作用域:局部变量;

全局作用域:全局变量;

超全局作用域:超全局变量;

如果在局部作用域使用(访问)全局变量?(常见需求)

$v1 = 1;

$v2 = 2;

function  f1(){

global  $v1;

echo  $v1; //输出1;

echo  $GLOBALS[‘v2’]; //输出2

}

有关函数的系统函数:

fuction_exitst(“函数名”); //判断该函数是否被定义过了(是否存在);

有关函数的编程思想

递归思想——递归函数

代码模式:

function  f1($n){

if($n == 最小级){

return  已知的值;

}

$result = 对 f1( $n-1) 进行一个简单计算;

return  $result;

}

递推(迭代)思想

$qian = 已知的值; //通常就是指最小级的数据值,是已知的;

for($i = 最小级的下一级, $i <= 目标级数; ++$i){

$result = 对 $qian 进行一个简单计算; 

$qian = $result; //将当前求得的结果值,当做“要求的下一级的”前一个值;

}

最后$result 就是结果;

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php基础笔记