php 递归 迭代

摘要:
您可以封装函数来解决大问题和小问题。您可以对fn调用此函数,但输入参数不一致。何时结束递归调用。数百个迭代思想的总和:1+2+3+4……将上一次运算的结果作为条件,并计算下一次结果7)引言,也称为递归:将已知条件作为迭代的原始值,并不断从原始值计算新值。然而,在某些情况下,例如读取文件夹,您只能使用递归思维,因为您不知道文件夹有多少层。

阶乘的求解思路:
5! = 5 * 4!
5! = 5 * 4 * 3!
5! = 5 * 4 * 3 * 2!
5! = 5 * 4 * 3 * 2 * 1!
1! =1;
计算5的阶乘时,没有立即计算出结果,需要求更低的阶乘

求5 的阶乘,核心:求其他数的阶乘。
定义一个求阶乘的函数fn: fn(5) = 5 * fn(4)
剩下的阶乘: fn($n )
在函数fn()中调用本身。

1.递归思想

1)介绍
将大问题拆分成多个小问题来解决。
小问题的解决方法与大问题的解决方法一致。
可以封装函数来解决大问题(求阶乘的函数fn)
小问题的解决可以通过调用该函数来fn实现,只是输入的参数不一致而已。

2)本质
由于小问题的解决方法与大问题的解决方法一致,函数内部去调用函数本身。
3)递归两要素
递归的调用点(入口):什么情况下函数开始调用本身。f(5) = 5 * f(4)
递归的出口。什么时候结束递归调用的问题。对于阶乘来说:计算1的阶乘,
4)应用:阶乘
这里写图片描述

5)递归的执行原理
调用一次函数,不会理解得到结果。需要按照新参数执行函数。不断的调用新的函数,直到拿到确定的值,再返回,逐层拿到计算结果。执行时占用的空间比较大。

迭代思想

百数之和:
在1+ 2 + 3+ 4…
将上一次运算的结果作为条件,计算下一个的结果
7)介绍
又称递推:
将已知条件作为迭代的原始值,不断有原始值计算出新值的过程。执行效率非常高。
Fibanacci数列 :
一对兔子生小兔子的问题:
1 1 2 3 5 8 13 21 34
这里写图片描述
斐波那契额数列:有如下一个数列:1, 2, 3, 5, 8, 13, 21,……. 其规则是:前两个已知(即1和2),从第3个开始,其值为其左边两个值的和(此数列称为斐波那契数列)。定义一个函数,该函数可以求出该数列的任意第n个数的值。

function Fei( $n ){
    if ( $n==1 ) {         //特例值
        return 1;
    } else if ( $n==2 ) {      //特例值
        return 2;
    } else {
        return Fei($n-1) + Fei($n-2);       //递归调用
    }
}

3.递归与递推的差异
递归在运行过程中不断开辟程序运行的内存空间,占用空间比较大。执行效率比较低。
但是在某些情况,如读取文件夹,由于不知道文件夹有多少层,此时只能使用递归思想。

免责声明:文章转载自《php 递归 迭代》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[ActionScript3.0] AS3利用ExternalInterface与js通信oracle语句下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

php转go?还是php+swoole?

一个老 PHP 程序员建议直接转 go。 我是在 2021 年夏天转 go 的。在那之前,写了很长时间的 php,对这门语言有很深的感情。 php 是我在大学里学的第一种脚本语言。当时流行的是微软的 asp 和 java 的 jsp。jsp 太麻烦,微软的东西我又很排斥,然后就在图书管找到了 php 的参考资料。当年我买了第一本 php 教程。你没看错,...

图片批量上传,并生成缩略图demo

这是一个 图片批量上传的demo 选择多张图片,一次上传,并且生成缩略图以及原图。 index.php 选择文件  upload.php 上传文件  并生成缩略图  thumbnail.php 返回缩略图到浏览器 index.php 1 <?php 2 session_start(); 3 $_SESSION["file_i...

Linux下PHP的完全卸载

如果想把PHP彻底的卸载干净,直接用yum的remove命令是不行的,而需要查看有多少rpm包,然后按照依赖顺序逐一卸载,在网上查了好多,都是通过 "rpm -qa | grep php" 命令查看有哪些rpm包,然后按照依赖关系依次卸载。 通过命令查看 [root@localhost test]# rpm -qa | grep php php-cli-5...

用docker配置php:7.3-fpm 、nginx 和 laravel

1 安装php:7.3-fpm镜像1.1 下载镜像 docker pull php:7.3-fpm 1.2 运行镜像 docker run -p 9000:9000 -d --name myphp-fpm -v /myweb/html:/var/www/html php:7.3-fpm 1.3 查看ip docker inspect myphp-fpm|g...

php 内存管理

内存是计算机⾮常关键的部件之⼀,是暂时存储程序以及数据的空间,CPU只有有限的寄存器可以⽤于存储计算数据,⽽⼤部分的数据都是存储在内存中的,程序运⾏都是在内存中进⾏的。和CPU计算能⼒⼀样, 内存也是决定计算效率的⼀个关键部分。 计算中的资源中主要包含:CPU计算能⼒,内存资源以及I/O。现代计算机为了充分利⽤资源,⽽出现了多任务操作系统,通过进程调度来共...

Thinkphp6笔记二:开启多应用模式

开启多应用模式1.首先刪除app目录下所有其他文件2.安装多应用模式扩展: composer require topthink/think-multi-app3.创建三大应用index(前端),admin(后台),common(公共应用)命令:php think build index命令:php think build admin命令:php think...