PHP 零基础入门笔记(14):编程思想

简介: PHP 零基础入门笔记(14):编程思想

编程思想

编程思想:利用数学模式,来解决对应的需求问题,然后利用代码实现对象的数据模型


算法:使用代码实现对应的数学模型,从而解决对应的业务问题


递推算法

是一种简单的算法,即通过已知条件,利用特定关系得出中间结论,直至得到结果的算法


递推算法的分类:


顺推 通过最简单的条件(已知),然后逐步推演结果

逆推 通过结果找到规律,然后推到已知条件

递推思想:菲波那切数列


<?php
// 1 1 2 3 5 8 13...
// 规律 第一个数为1,第二个数为1,第三个数开始为前两数之和
// n(3) = n(2) + n(1);
$f[1] = 1;
$f[2] = 1;
$n = 5;
for($i = 3; $i <= $n; $i++){
    $f[$i] = $f[$i - 1] + $f[$i - 2];
}
echo json_encode($f);
// {"1":1,"2":1,"3":2,"4":3,"5":5}

封装为函数


<?php
// 1 1 2 3 5 8 13...
// 规律 第一个数为1,第二个数为1,第三个数开始为前两数之和
// n(3) = n(2) + n(1);
function fibonacci($n){
    // 判断为第一个或第二个直接返回
    if($n == 2 || $n == 2){return 1;}
    $f[1] = 1;
    $f[2] = 1;
    for($i = 3; $i <= $n; $i++){
        $f[$i] = $f[$i - 1] + $f[$i - 2];
    }
    // 返回最后一个
    return $f[$n];
}
echo fibonacci(7);
// 13

递归算法

把问题转化为规模缩小了的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解


简化问题:找到最优子问题(不能再小)

自己调用自己

例如:菲波那切数列


F(N) = F(N - 1)  + F(N - 2)
F(N - 1) = F(N - 2) + F(N - 3)
...
F(2) = F(1) = 1

重要点:


递归点:发现当前问题可以有解决当前问题的函数,去解决规模比当前小一点的问题来解决

F(N) = F(N - 1)  + F(N - 2)

递归出口:当问题解决的时候,已经到达(必须有)最优子问题,不能再次调用函数

没有递归出口就是死循环


递归的本质是利用空间换时间


<?php
function fibonacci($n){
    // 递归出口
    if($n == 1 || $n == 2){
        return 1;
    }
    // 递归点:大问题变为小问题处理
    return fibonacci($n - 1) + fibonacci($n + 1);
}

相关文章
|
7月前
|
自然语言处理 安全 PHP
PHP 之道笔记整理:最佳实践与安全指南
这篇文章讨论了PHP开发中的最佳实践,包括使用最新稳定版(PHP 8.3)以提升性能和安全,利用`DateTime`类及Carbon库处理日期时间,确保使用UTF-8编码并用`mb_*`函数处理字符串,以及通过密码哈希和数据过滤来加强Web应用安全。文章提醒开发者始终保持对新技术和安全实践的关注。
111 2
|
8月前
|
JSON JavaScript Java
【PHP】英文博客专栏PHP快速入门个人笔记
【PHP】英文博客专栏PHP快速入门个人笔记
145 1
|
JavaScript PHP
php正则表达式获取(捕获)组的笔记
@(汗)的确,网络上存在很多这样的内容了,但今天我是来补充内容的,滑稽@(你懂的) 众所周知 ,js中正则表达式()可以来获取匹配到内容,然后用$0 ...来显示
83 0
|
JSON PHP 数据格式
php笔记
php笔记
168 0
php笔记
|
存储 监控 前端开发
【php详细笔记】上传文件到服务器(下)
【php详细笔记】上传文件到服务器
126 0
【php详细笔记】上传文件到服务器(下)
|
存储 缓存 安全
【php详细笔记】上传文件到服务器(上)
【php详细笔记】上传文件到服务器
369 0
【php详细笔记】上传文件到服务器(上)
|
Web App开发 安全 Shell
【PHP快速入门】详细笔记---精简版(下)
【PHP快速入门】详细笔记---精简版
131 0
【PHP快速入门】详细笔记---精简版(下)
|
安全 Java Linux
【PHP快速入门】详细笔记---精简版(上)
【PHP快速入门】详细笔记---精简版
118 0
【PHP快速入门】详细笔记---精简版(上)
|
安全 PHP
PHP基础笔记-NO.4
PHP基础笔记
105 0
PHP基础笔记-NO.4
|
开发框架 前端开发 JavaScript
PHP基础笔记-NO.1
PHP基础笔记
126 0
PHP基础笔记-NO.1