程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。——摘自百度百科

递推算法是一种用若干步可重复的简运算(规律)来描述复杂问题的方法.
递推是序列计算机中的一种常用算法。它是按照一定的规律来计算序列中的每个项,通常是通过计算机前面的一些项来得出序列中的指定象的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复,该算法利用了计算机速度快和不知疲倦的机器特点。——还是摘自百度百科
简单来说,关于递推和递归,概念如下:
void digui()
{if(你不懂)    digui();if(你懂了)    return  hehe;
}

void ditui()
{if(你没懂)  ditui();if(你懂了)  cout<<"hehe";
}

怎么样,用简洁明快的方法就能让你明白算法的真谛是不是很爽hhhhh

递归递推作为基础算法其实并不难,但还是有必要举一些例题来看看= =

1.

小猴子第一天摘下若干桃子,当即吃掉一半,又多吃一个.第二天早上又将剩下的桃子吃一半,又多吃一个.以后每天早上吃前一天剩下的一半另一个.到第10天早上猴子想再吃时发现,只剩下一个桃子了.问第一天猴子共摘多少个桃子?

= =这踏马其实就是一个口算题,放在这里只是为了加深算法印象

2.

有雌雄一对兔子,假定过两个月便可繁殖雌雄各一的一对小兔子。问过n个月后共有多少对兔子?

这是著名的斐波那契数列= =递推必刷题之一,当然还有很多关于这道题的难题,暂时不一一列举

3.角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。 如:输入22, 输出

22  11  34  17  52  26  13  40  20  10  5  16  8  4  2  1

STEP=16

= -简单递推不解释。。。。

有人会问,要这么多水题来干嘛?我会说:水题不水永远不知道这是水题= =

难题肯定有,只是太多太常见,找UVA随便打几个数就是一堆= -

由于本次算法简单粗暴,所以详解略少,整理动态规划的时候我会再搞出来一点递推的东西。

转载于:https://www.cnblogs.com/qianyintinghan/p/5384083.html

基础算法整理(1)——递归与递推相关推荐

  1. 【算法反刍】递归与递推

    对于递归和递推的非常专业的定义和解释在这里就不再copy了,私以为算法的关键是运用和实践,就好比围棋,规则简单但是入门的门槛很高,就算熟练记忆规则也没法下好一盘棋.Likewise,对于算法学习,最关 ...

  2. YbtOJ「基础算法」第1章 递推算法

    YbtOJ 大全 [例题1]错排问题 设 f [ n ] f[n] f[n] 表示 n n n 个数时的合法方案数.初始化 f [ 1 ] = 0 , f [ 2 ] = 1 f[1]=0,f[2] ...

  3. 贪心、递归、递推以及动态规划算法的分析与对比

    PS:   头一次规规矩矩的按照论文的格式写文章,呵呵.虽然是小儿科的不能再小儿科的东西了..不过..也忽悠了6000多字~~嘿嘿..肯定写的不好,第一次嘛..所以..接受大家一切批评哈!...文章N ...

  4. 2.3 基本算法之递归变递推 1188 菲波那契数列(2) python

    http://noi.openjudge.cn/ch0203/1760/ """2.3 基本算法之递归变递推 1188 菲波那契数列(2)--3分 http://ybt. ...

  5. 2.3基本算法之递归变递推 1188 菲波那契数列(2)

    http://noi.openjudge.cn/ch0203/1760/ /* 2.3基本算法之递归变递推 1188 菲波那契数列(2) http://ybt.ssoier.cn:8088/probl ...

  6. 2.3 基本算法之递归变递推 放苹果 python

    http://noi.openjudge.cn/ch0203/666/ """ 2.3 基本算法之递归变递推 666 放苹果 http://noi.openjudge.c ...

  7. 2.3基本算法之递归变递推_3525上台阶

    http://ybt.ssoier.cn:8088/problem_show.php?pid=1190 /* 2.3基本算法之递归变递推_3525上台阶 http://noi.openjudge.cn ...

  8. 2.3基本算法之递归变递推_3525上台阶 python

    http://ybt.ssoier.cn:8088/problem_show.php?pid=1190 """ 2.3基本算法之递归变递推_3525上台阶 http:// ...

  9. 算法——递归与递推[蓝桥杯]

    文章目录 递归与递推 递归实现(指数型)枚举 递归实现(排列型)枚举 递归实现(组合型)枚举 补充:DFS的优化-剪枝 递归与递推 递归就是自己调用自己. printf和scanf的速度比cin和co ...

  10. 斐波那契尾递归函数java_斐波那契数列 递归 尾递归 递推 C++实现

    ==================================声明================================== 本文原创,转载请注明作者和出处,并保证文章的完整性(包括本 ...

最新文章

  1. Python之Mysql及SQLAlchemy操作总结
  2. 什么数据库最适合数据分析师
  3. PAT (Advanced Level) 1014 Waiting in Line(模拟)
  4. idea中隐藏.idea文件夹和.iml文件
  5. VHDL基本门电路和数值比较器的设计
  6. 【LeetCode】剑指 Offer 64. 求1+2+…+n
  7. Atlassian 域名被曝一次点击账户接管漏洞 可导致供应链攻击
  8. ad19电气规则检查_铁路机车操作规则(铁运2012281号)
  9. IDEA如何导入git仓库的分支代码
  10. PHP统计订单表,订单售后表金额
  11. php操作sqlserver视频教程,SQLServer数据库基础视频教程下载
  12. 藏在耳机里的小东西——蓝牙天线
  13. 安卓学习pdf_【手机电脑全平台通用】手把手教你制作可点读日语PDF!
  14. 抖音短视频系统开发Service后台播放音乐实例
  15. 【AI科幻】地球陨落·平行世界
  16. 如何制作点餐小程序?
  17. 回发或回调参数无效 的解决办法
  18. Java计算两个时间的小时差
  19. 山东大学数字图像处理实验(五)
  20. ChatGPT带你一起了解C语言中的fclose()

热门文章

  1. 全局唯一ID生成方案
  2. Java拦截过滤器模式
  3. 大主子表关联的性能优化方法
  4. springboot 整合redis 实现KeySpaceNotification 键空间通知
  5. SQL Server 运行计划操作符具体解释(2)——串联(Concatenation )
  6. mvc存储Cookie和读取Cookie方法
  7. IE6 下div高度显示的问题
  8. 关于SQLServer2005的学习笔记——约束、Check、触发器的执行顺序
  9. 转:一个简单的基于WEB的QTP自动化测试框架-SAFFRON
  10. 卸载linux系统装win,如何在计算机上删除 Linux 并安装 Windows