php 递推 递归
思想:如何利用数学模式,来解决对应的需求问题,然后利用代码实现对应的数据模型(逻辑)
算法:使用代码实现对应的数学模型,从而解决对应的业务问题
递推算法是一种简单的算法,级通过已知条件,利用特定关系得出中间推论,直至得到结果的算法,分为顺推和逆推两种
顺推:通过最简单的条件(已知)然后逐步推演结果
逆推:通过结果找到规律,然后推到已知条件
斐波那契数列:1,1,2,3,5,8,13...
$f[1] = 1;
$f[2] = 1;
$def = 15;
for($i = 3;$i < $des;$i++){
$f[$i] = $f[$i-1]+$f[$i-2];
}
echo '<pre>';
print_r($f);
function my_k($des){
if($des == 1||$des ==2) return 1;
$f[1] = 1;
$f[2] = 1;
for($i = 3;$i < $des;$i++){
$f[$i] = $f[$i-1]+$f[$i-2];
}
return $f[$des];
}
echo my_k(15);
递归
是把问题转化为规模缩小的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解
简化问题找到最优子问题
函数自己调用自己
递归点:发现当前问题可以有解决当前问题的函数,去解决规模比当前小一点的问题来解决
F(N) = F(N - 1) + F(N - 2);
递归出口:当前问题解决的时候,已经到达(必须有)最优子问题,不能再次调用函数
如果一个函数递归调用自己而没有递归出口:就是死循环
递归本质是函数调用函数:一个函数需要开辟一块空间,递归会出现同时调用N多个函数(自己):递归的本质是利用空间换时间
function rec($n){
// 递归出口
if($n == 1|| $n == 2) return 1;
// 递归点:求N的值,与N - 1的值一模一样,只是N-1的规模比N小
return rec($n - 1) + rec($n - 2);
}
echo rec(15);
-----
php 递推 递归的更多相关文章
- 「学习笔记」递推 & 递归
引入 假设我们想计算 \(f(x) = x!\).除了简单的 for 循环,我们也可以使用递归. 递归是什么意思呢?我们可以把 \(f(x)\) 用 \(f(x - 1)\) 表示,即 \(f(x) ...
- ACM之递推递归
Hdu 2569 突破蝙蝠的包围,yifenfei来到一处悬崖面前,悬崖彼岸就是前进的方向,好在现在的yifenfei已经学过御剑术,可御剑轻松飞过悬崖. 现在的问题是:悬崖中间飞着很多红,黄,蓝三种 ...
- 《剑指offer》递推与循环,栈和队列,回溯 (牛客10.27)
难度 题目 知识点 07. 斐波那契数列 递推递归 - 两变量写法- 08. 跳台阶 同上 09. 变态跳台阶 dp 10. 矩形覆盖 同上 05. 用两个栈实现队列 模拟 ☆ 20. 包含min函数 ...
- 从一道NOI练习题说递推和递归
一.递推: 所谓递推,简单理解就是推导数列的通项公式.先举一个简单的例子(另一个NOI练习题,但不是这次要解的问题): 楼梯有n(100 > n > 0)阶台阶,上楼时可以一步上1阶,也可 ...
- 斐波那契数列 递归 尾递归 递推 C++实现
==================================声明================================== 本文原创,转载请注明作者和出处,并保证文章的完整性(包括本 ...
- 百练2755 奇妙的口袋 【深搜】or【动规】or【普通递归】or【递推】
总Time Limit: 10000ms Memory Limit: 65536kB 有一个奇妙的口袋.总的容积是40,用这个口袋能够变出一些物品,这些物品的整体积必须是40.John如今有n个 ...
- 动态规划——数字三角形(递归or递推or记忆化搜索)
动态规划的核心就是状态和状态转移方程. 对于该题,需要用抽象的方法思考,把当前的位置(i,j)看成一个状态,然后定义状态的指标函数d(i,j)为从格子出发时能得到的最大和(包括格子本身的值). 在这个 ...
- 【Java】递归递推的应用
利用阶乘公式来计算组合式: 程序设计思想: 根据公式来计算组合数的大小,从键盘输入n,k的值,设计一个计算阶乘的大小,如果输入的数a为1或0,则直接return 1,否则运用递归,计算a-1的阶乘,直 ...
- 蓝桥杯—BASIC-21 sine之舞(递归递推)
题目:最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数,所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力. 不妨设 An=sin(1– ...
随机推荐
- 微服务安全(二)OAuth 2.0
1. 概念 OAuth是一个开放的.安全的用户认证协议,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源,而无须将用户名和登录口令提供给第三方应用.授权的第三方应用只能在特定的时段内访问特定 ...
- C语言日记② 初识 C的内存
第一节: 上一个笔记 有趣的恶搞小程序 定时关机 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <str ...
- 题解 ABC216H Random Robots
link Solution 考虑一个不合法方案,它一定最后位置的逆序对数不为 \(0\),而且可以发现的是,存在对称方案使得最后逆序对数奇偶性不同,所以我们如果加上 \((-1)\)^{\sigma( ...
- Java(22)常用API一
1 API 1.1 API概述 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK 中提供的 ...
- selenium3 利用cookie实现免登陆
1.首先访问要操作的页面 2.登陆一次,使用Fiddle等工具抓取出cookie 3.按照如下代码,即可成功登陆 from selenium import webdriver url = " ...
- SpringCloud微服务实战——搭建企业级开发框架(五):数据库持久化集成MySql+Druid+MyBatis-Plus
在引入相关数据库持久化相关依赖库之前,我们可以考虑到,当我们因业务开发需要,引入各种各样的依赖库时,Jar包冲突是我们必须面对的一个问题,Spring为了解决这些Jar包的冲突,推出了各种bom, ...
- Java 是编译型语言还是解释型语言?
Java首先由编译器编译成.class类型的文件,这个是java自己类型的文件.然后在通过虚拟机(JVM)从.class文件中读一行解释执行一行.因此Java是一种半编译半解释的语言,理解这种意思即可 ...
- 计算机网络:HTTP
计算机网络基础:HTTP 先验知识 HTTP和其他协议的关系 通过下图,了解IP协议,TCP协议,DNS服务在使用HTTP协议通信过程中各自发挥的作用: 服务器处理流程 接受客户端连接 ------& ...
- 晶振在电路设计时关于负载电容CL大小取值特别需要注意什么?
在无源晶体的设计中,经常遇到负载电容CL的大小取值.晶振设计与精度的提高.KHz无源晶振的停止.音叉晶体谐振器的精度漂移以及精度和无源晶振在高温下的精度是否等于低温的精度烦忧的问题等. 无源晶体振荡器 ...
- LVDS DP等显示器接口简介
LVDS 产品传输速率从几百Mbps到2Gbps.它是电流驱动的,他通过在接收端放置一个负载而得到的电压,当电流正向流动,接收端输出为1,反之为0,它的摆幅250mV-450mV. lvds 即低压差 ...