基础算法 —— 递推算法
【概述】
- 递推算法:通过已知条件,利用相邻的数据项间的关系(即:递推关系),得出中间推论,直至得到结果的算法。
- 递推关系:给定一个数的序列H0,H1,…,Hn,若存在整数N0,使当n>N0时,可以用=/>/<将Hn与其前面的某些项Hi(0<i<n)联系起来。
- 特点:避开了求通项公式的麻烦,把一个复杂问题的求解,分解成了连续的若干简单运算。
- 基本思想:把一个复杂的庞大的计算过程转化为简单过程的多次重复。
- 逆推与顺推:在计算时,如果可以找到前后过程之间的数量关系(即:递推式),那么,从已知条件推到问题叫顺推,从问题出发推到已知条件叫逆推。
- 递推与递归的比较:相对于递归算法,递推算法免除了数据进出栈的过程,也就是说,不需要函数不断的向边界值靠拢,而直接从边界出发,直到求出函数值。
【经典应用】
1.斐波那契数列的递推实现
int Fibonacci(int n)
{ if (n<0) return -1; int n1=1,n2=2,n3=3;for (int i=3;i<=n;++i) { n3=n1+n2; n1=n2; n2=n3; } return n3;
}
2.汉诺塔问题的递推实现
#include<stdio.h>
int ct=1;//记录步数,在步骤中输出
void move(int n,char from,char to)
{printf("第 %2d 步:把第 %d 个盘子: %c >>>>>>> %c\n",ct++,n,from,to);
}
int hanoi(int n)//输出步数:
{int cnt = 2,ans = 1;if(n == 1)return 1;elsereturn 2* hanoi(n-1) +1;
}
void hanoi_tower(int n,char x,char y, char z) //输出步骤
{if(n==1)move(1,x,z);else{hanoi_tower(n-1,x,z,y);move(n,x,z);hanoi_tower(n-1,y,x,z);}
}
int main()
{int n;//盘子个数printf("输入盘子个数:\n");scanf("%d",&n);char x = 'A',y = 'B',z = 'C';int t = hanoi(n);printf("一共需要%2d步。\n",t);hanoi_tower(n,x,y,z);return 0;
}
关于汉诺塔问题:点击这里
【例题】
- 昆虫繁殖(信息学奥赛一本通-T1312):点击这里
- 位数问题(信息学奥赛一本通-T1313):点击这里
- 过河卒(信息学奥赛一本通-T1314):点击这里
- Pell数列(信息学奥赛一本通-T1189):点击这里
- 上台阶(信息学奥赛一本通-T1190):点击这里
- 放苹果(信息学奥赛一本通-T1192):点击这里
- 吃糖果(信息学奥赛一本通-T1193):点击这里
- 移动路线(信息学奥赛一本通-T1194):点击这里
- 踩方格(信息学奥赛一本通-T1196):点击这里
- Cantor表(洛谷-P1014):点击这里
- 猜数字(HDU-2178):点击这里
- 母牛的故事(HDU-2018):点击这里
- 折线分割平面(HDU-2050):点击这里
- 统计问题(HDU-2563):点击这里
- Sumsets(POJ-2229):点击这里
- Moo Volume(POJ-2231):点击这里
- 台阶问题(洛谷-P1192):点击这里
- 钥匙计数之一(HDU-1483):点击这里
- Numbers on the Chessboard(CF-1027B):点击这里
- Coloring Dominoes(Atcoder-2697):点击这里
- Blackboard Fibonacci(CF-217B):点击这里
- Binary Tree(HDU-5573)(二进制枚举):点击这里
- 处女座与汉明距离(2019牛客寒假算法基础集训营 Day2-E)(格雷码的构造):点击这里
基础算法 —— 递推算法相关推荐
- 算法竞赛宝典-递推算法
算法竞赛宝典-递推算法 Problem A [递推]挖地雷 待更新 问题 B: [递推]偶数3的个数 时间限制: 1 Sec 内存限制: 64 MB 题目描述 "报告,我军已探出地雷阵中所有 ...
- 扩展欧几里得算法_扩展欧几里得递推算法
欧几里得算法 表示 整数 a 与 b 的最大公约数. 若 t = a % b, 则 证明略. 递推版 gcd 算法 gcd 接受变量元组 (a, b) 作为输入,输出最大公约数 (r). 我们很难直接 ...
- matlab如何仿真递推型dft算法,递推dft算法
0.7 0.8 0.9 1 0.6 0.7 0.8 0.9 1 伯格(Burg)递推算法 L-D算法缺点: 在计算相关函数估计时,对N个观测数据以 外的数据作零的假设,故谱估计误差较...... 第3 ...
- 算法设计与分析第一章递推算法
算法设计与分析 第一章 递推算法 1.概述 在**已知条件**和**所求问题**之间总存在着某种相互联系的关系,如果可以找到前后过程之间的数量关系(即递推式),那么,从**问题出发逐步推到已知条件** ...
- java穷举密码_穷举算法和递推算法(Java)
穷举算法 概念: 最简单算法,依赖计算机的强大计算能力穷尽每一种可能的情况.穷举算法效率不高,但是适合一些没有明显规律可循的场合. 思想: 在使用穷举算法时,需要明确问题答案的范围,这样才可能在指定范 ...
- YbtOJ「基础算法」第1章 递推算法
YbtOJ 大全 [例题1]错排问题 设 f [ n ] f[n] f[n] 表示 n n n 个数时的合法方案数.初始化 f [ 1 ] = 0 , f [ 2 ] = 1 f[1]=0,f[2] ...
- 2022蓝桥杯B组—积木画——递推算法
积木画 题目描述 小明最近迷上了积木画,有这么两种类型的积木,分别为 III 型(大小为 222 个单位面积)和 LLL 型(大小为 333 个单位面积): 同时,小明有一块面积大小为 2×N2×N2 ...
- 0x02.基本算法 — 递推与递归
目录 一.递推与递归 二.分治 三.模拟计算机实现递归 四.相应习题: 0.AcWing 92. 递归实现指数型枚举(递归/循环+位运算) 1.AcWing 93. 递归实现组合型枚举 2.AcWin ...
- 求逆元的两种方法+求逆元的O(n)递推算法
到国庆假期都是复习阶段..所以把一些东西整理重温一下. gcd(a,p)=1,ax≡1(%p),则x为a的逆元.注意前提:gcd(a,p)=1; 方法一:拓展欧几里得 gcd(a,p)=1,ax≡1( ...
最新文章
- 万字长文爆肝 DNS 协议!
- 小K的农场(luogu P1993
- Oracle之外部表
- oracle主从表分离怎么实时更新数据_高可用数据库主从复制延时的解决方案
- smtp中mailfrom是必须的吗_你是住在高层建筑中吗?这是你必须了解的
- python基本语法:字典
- 如何利用navicat可视化软件添加与新建mysql数据库
- c语言规定 程序中用到的变量一定要,C语言为什么要规定对所用到的变量要“先定义,后使用”...
- 微信可以远程控制电脑吗_上车| 手机远程控制手机,还可以控制电脑
- boost采取什么驱动电路_当我们只是采取积极的意愿时会发生什么?
- 淘宝购物车分享上线第一天:630万人在用购物车社交
- iOS获取、写入系统相册图片
- http请求出现406错误解决方案
- 如何优雅地给同事提“改进性建议”
- 详细名单:Google的581个域名
- LaTeX算法流程中英文伪代码
- 英语时态8种基本时态讲解
- 空手套白狼之——兼职中介
- jvm如何排查生产环境cpu飙高的问题
- 【已解决】戴尔笔记本wifi速度慢的问题。