计算机语言与程序设计;第八章 递归算法;从前有座山,山上有座庙,庙里有一个老和尚和一个小和尚,老和尚正在给小和尚讲故事。讲的是什么故事呢?他说,从前……;Recursion- See "Recursion". "In order to understand recursion, one must first understand recursion." ;C语言允许嵌套地调用函数,也就是说,在调用一个函数的过程中,又去调用另一个函数。;函数的嵌套调用有一个特例,即递归调用,也就是说,在调用一个函数的过程中,又出现了直接或间接地去调用该函数本身。;void tell_story( ){ static int old_monk, young_monk;

old_monk = old_monk + 1; // 年龄大了一岁 young_monk = young_monk + 1; if(old_monk <= 60) // 递归形式 tell_story ( ); else printf("对不起,已退休!"); // 递归边界};在语法上(简单)递归即为普通的函数调用。在算法上(难)如何找到递归形式?如何找到递归边界?;递归算法的类型;第八章 递归算法;分而治之(divide-and-conquer)的算法设计思想:Divide:把问题划分为若干个子问题;Conquer:以同样的方式分别去处理各个子问题;Combine:把各个子问题的处理结果综合起来,形成最终的处理结果。;玛特露什卡;……;如何编写基于分治策略的递归程序?在算法分析上,要建立分治递归的思维方式。在编程实现上,要建立递归信心(To turst the recursion, Jerry Cain, stanford)。;如何建立分治递归的思维方式?基本原则:目标驱动!计算n!:n! = n * (n-1)!,且1! = 1。;;void main( ){ int n; printf("请输入一个整数:"); scanf("%d", &n); printf("%d! = %d \n", n, fact(n));}int fact(int n){ if(n == 1) return(1); else return(n * fact(n-1));};调用和返回的递归示意图;如何建立递归信心?函数的递归调用到底是如何进行的呢?在递归调用时,执行的是不是相同的代码?访问的是不是相同的数据?如果是的话,那么大家会不会相互干扰、相互妨碍?;main的栈帧;8.2.2 寻找最大值;如何来设计相应的递归算法?目标:max{a[0], a[1], … a[n-1]}可分解为:max{a[0], max{a[1], … a[n-1]}}另外已知max{x} = x这就是递归算法的递归形式和递归边界,据此可以编写出相应的递归函数。;int Max(int a[], int first, int n){ int max;

if(first == n-1) return a[first]; max = Max(a, first+1, n); if(max < a[first]) return a[first]; else return max;};8.2.3 折半查找法;前提:数据是有序排列的;基本思路:将目标值与数组的中间元素进行比较;若相等,查找成功。否则根据比较的结果将查找范围缩小一半,然后重复此过程。;4120243;4120243;4120243;4120243;4120243;void main(){ int b[] = {05, 13, 19, 21, 37, 56, 64, 75, 80, 88, 92}; int x = 21;

printf("x位于数组的第%d个元素\n", bsearch(b, x, 0, 10));};函数原型:int bsearch(int b[], int x, int L, int R);递归的形式?递归的边界?;int bsearch(int b[], int x, int L, int R){ i

c语言上20级台阶递归法,c语言递归算法.pptx相关推荐

  1. [递归]一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    这题是用C写的~ 在牛客上半天找不着ACM模式,练习模式里只有核心代码模式 这样用C语言编译器就不能自定义函数啊,不鸡肋吗??? 解决方法:在核心代码模式下用C++编译器(反正C++完全兼容C的不是吗 ...

  2. 笔试题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。该题有三种解法:递归的方法求解斐波那契数列、用概率与统计的数学方法解决,3.动态规划

    笔试题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法.该题有三种解法:1.递归的方法求解斐波那契数列.2.用概率与统计的数学方法解决,3.动态规划 ...

  3. c语言青蛙游戏,c语言:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?...

    一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? 解:把n级台阶时的跳法记为f(n),当n>2时,第一次跳的时候有两种不同的选择:一是第一次只跳1级,此 ...

  4. 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?(递归与动态规划)

    一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法? private static HashMap<Integer, Long> record = n ...

  5. 牛客网刷题java之(斐波那契数列)一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 分析: 对于本题,前提只有 一次 1阶或者2阶的跳法. a.如果两种跳法, ...

  6. 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

    import java.util.Scanner;/* 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法.请用递归和循环2中方法实现答案来源:https://w ...

  7. 一只青蛙一次可以跳上1级台阶也可以跳上2级求该青蛙跳上一个n级的台阶总共有多少种跳法?

    一只青蛙一次可以跳上1级台阶也可以跳上2级求该青蛙跳上一个n级的台阶总共有多少种跳法? 解题思路 :每次跳1到n,那么如果是n阶台阶,一次就可能跳1~n阶(话说n=1000,青蛙腿肯定绑火箭了),乍一 ...

  8. (java)跳台阶:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    文章目录 题目描述 思路 解法一:递归暴力破解 解法二: 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路 解法一 ...

  9. 【LeetCode力扣】青蛙跳台阶问题,一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

    学习目标: 目标:熟练运用 Java所学知识 题目内容: 本文内容: 使用Java实现:青蛙跳台阶问题 文章目录 学习目标: 题目内容: 题目描述 实现思路: 实现代码: 运行结果: 题目描述 一只青 ...

最新文章

  1. WSGI、Flask及Werkzeug三者之间的关系
  2. PAT A1065 A+B and C (64bit) (20 分)
  3. Windows Server 2008服务器管理新技巧6则第1/4页
  4. python urlretrieve 管道_Python基础之 urllib模块urlopen()与urlretrieve()的使用方法详解。...
  5. .NET 指南:实现 Equals 方法
  6. 编写一个函数判断一个整数是不是素数c语言,设计一个函数,用来判断一个整数是否为素数。代码如下,按要求在空白处填写适当的表达式或语句,使...
  7. 设计模式之对象池模式
  8. pmp学习资料下载-pmp备考
  9. 3D旋转相册html+css代码分享
  10. 微信公众号小程序微商城源码
  11. 如何快速搭建公司网站?
  12. 使用jmeter进行压测
  13. 如何读取环境变量值?Go 每日一库之 godotenv
  14. hadoop 文本统计一个字符的个数_hadoop统计单词个数 - 卡饭网
  15. Skywalking(10):告警功能
  16. 【Python】Python3如何将汉字转化成反斜线u(\u)开头的字符串
  17. 笨鸟的平凡之路-简单理解什么是_consumers_offsets
  18. Java+MySQL 基于Springboot+vue的旧物置换网站#毕业设计
  19. vivado实现SDI接口
  20. 响铃:什么样的网综才配得上“超级网综”?

热门文章

  1. google 确定某点海拔高_如何查询某个地点的海拔高度,详情介绍
  2. 利用pandas进行简单数据分析-医院销售数据分析案例
  3. 电机的反电动势了解及步进电机的基本特性
  4. 写给养花小白的水培小教程
  5. 2017 年度读书总结
  6. 科普一下IP路由基础
  7. phpredis 和 predis
  8. 网络安全从入门到精通(第三章) 信息收集
  9. 华清远见上海中心培训感言
  10. FACEBOOK登录