递归函数理解

递归函数理解递归函数 递归函数即自调用函数 在函数体内部直接或间接地自己调用自己 即函数的嵌套调用是函数本身 该函数必须有一种能够 停止调用 的机制 如使用 if 语句 该机制 被称为递归函数的 出口 实例 1 fu

欢迎大家来到IT世界,在知识的湖畔探索吧!

递归函数:

递归函数即自调用函数,在函数体内部直接或间接地自己调用自己,即函数的嵌套调用是函数本身。

该函数必须有一种能够”停止调用”的机制,如使用if语句。该机制,被称为递归函数的”出口”。

实例1:

function f1($n){ echo $n." "; $n++; } f1(5);

欢迎大家来到IT世界,在知识的湖畔探索吧!

输出结果5

实例2:

欢迎大家来到IT世界,在知识的湖畔探索吧!function f1($n){ echo $n." "; $n++; if($n<10){ f1($n); } } f1(5);

输出结果:5 6 7 8 9

实例3

 
   

输出结果:5 6 7 8 9 9 8 7 6

实例4

欢迎大家来到IT世界,在知识的湖畔探索吧!function test($n){ echo $n." "; if($n>0) test($n-1); else echo "<-->"; } test(10)

输出结果:10 9 8 7 6 5 4 3 2 1 0 <-->

实例5

function test($n){ echo $n." "; if($n>0) test($n-1); else echo "<-->"; echo $n." "; } test(10)

输出结果:10 9 8 7 6 5 4 3 2 1 0 <-->0 1 2 3 4 5 6 7 8 9 10

讨论实际应用中的递归思想应用(阶乘的实现):

阶乘的数学定义:一个正整数的阶乘,是从1一直乘到它本身的乘积。

阶乘的一个基本算法是:

n的阶乘 = (n-1)的阶乘 * n;

其中,1的阶乘是1。

欢迎大家来到IT世界,在知识的湖畔探索吧!function jiecheng($n){ if($n == 1){ //1的阶乘是1(已知) return 1; } //其他数的阶乘,是 (该数) * (该数减一的阶乘) 的乘积 return jiecheng($n-1) * $n; } $v1 = jiecheng(5); echo "
v1 = $v1";

以下为该函数的模拟调用过程:

$v1 = jiecheng(5) $v1 = jiecheng(4) * 5 $v1 = (jiecheng(3) * 4) * 5 $v1 = ((jiecheng(2) * 3) * 4) * 5 $v1 = (((jiecheng(1) * 2) * 3) * 4) * 5

特别注意:上一行jiecheng(1)表示要求1的阶乘,但1的阶乘是"已知"的,为1

欢迎大家来到IT世界,在知识的湖畔探索吧!$v1 = (((1 * 2) * 3) * 4) * 5 $v1 = ((2 * 3) * 4) * 5 $v1 = (6 * 4) * 5 $v1 = 24 * 5 $v1 = 120

递归函数在类中如何定义?

如: 改名键名的大小写在类中方法的编写

private function changeArrKey($array, $case = 0){ if(!is_array($array)) return $array; $tempArray = array(); $do = ($case === 0)? "strtolower" : "strtoupper"; foreach ($array as $key=>$value){ $key = $do($key); if(is_array($value)){ $value = self::changeArrKey($value); //self 代表当前类 }else{ $value = $do($value); } $tempArray[$key] = $value; } return $tempArray; } 


免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/89481.html

(0)
上一篇 14小时前
下一篇 14小时前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信