下面希赛小编为大家整理的软考程序员考点C语言程序设计之递归法,希望能帮助学友们。具体内容如下:

递归法

递归法是设计和描述算法的一种有力的工具,由于它在复杂算法的描述中被经常采用,为此在进一步介绍其他算法设计方法之前先讨论它。

概述

能采用递归描述的算法通常有这样的特征:为求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模较大问题的解。特别地,当规模N=1时,能直接得解。

执行过程

递归算法的执行过程分递推和回归两个阶段。在递推阶段,把较复杂的问题(规模为n)的求解推到比原问题简单一些的问题(规模小于n)的求解。例如上例中,求解fib(n),把它推到求解fib(n-1)和fib(n-2)。也就是说,为计算fib(n),必须先计算fib(n-1)和fib(n-2),而计算fib(n-1)和fib(n-2),又必须先计算fib(n-3)和fib(n-4)。依次类推,直至计算fib(1)和fib(0),分别能立即得到结果1和0。在递推阶段,必须要有终止递归的情况。例如在函数fib中,当n为1和0的情况。

在回归阶段,当获得最简单情况的解后,逐级返回,依次得到稍复杂问题的解,例如得到fib(1)和fib(0)后,返回得到fib(2)的结果,……,在得到了fib(n-1)和fib(n-2)的结果后,返回得到fib(n)的结果。

在编写递归函数时要注意,函数中的局部变量和参数只是局限于当前调用层,当递推进入“简单问题”层时,原来层次上的参数和局部变量便被隐蔽起来。在一系列“简单问题”层,它们各有自己的参数和局部变量。

作用

由于递归引起一系列的函数调用,并且可能会有一系列的重复计算,递归算法的执行效率相对较低。当某个递归算法能较方便地转换成递推算法时,通常按递推算法编写程序。例如上例计算斐波那契数列的第n项的函数fib(n)应采用递推算法,即从斐波那契数列的前两项出发,逐次由前两项计算出下一项,直至计算出要求的第n项。

希赛软考学院,拥有十四年软考培训经验,希赛教育一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库(软考历年真题)、软考培训教材和软考视频教程,多样的培训方式包括在线辅导、面授、和网络课堂,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,保障学员顺利通过考试,软考平均通过率在全国。

C语言程序设计递推递归n,软考程序员考点C语言程序设计之递归法相关推荐

  1. c语言设计程序之数组,软考程序员考点C语言程序设计之数组

    下面希赛小编为大家整理的软考程序员考点C语言程序设计之数组,希望能帮助学友们.具体内容如下: 数组 所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后 ...

  2. 软考 java程序设计,软考程序员考点Java语言程序设计之控制流语句分类

    下面希赛小编为大家整理的软考程序员考点Java语言程序设计之控制流语句分类,希望能帮助学友们.具体内容如下: 分类 它们由特定的语句定义符组成.C语言有九种控制语句.可分成以下三类: (1).条件判断 ...

  3. 计算机中央处理器相关知识,软考程序员考点计算机硬件基础知识之中央处理器CPU...

    下面希赛小编为大家整理的软考程序员考点计算机硬件基础知识之中央处理器CPU,希望能帮助学友们.具体内容如下: 中央处理器 中央处理器(CPU,Central Processing Unit)是一块超大 ...

  4. 程序员c语言基础,《软考程序员》C语言基础

    程序员(英文Programmer)是从事程序开发.维护的专业人员.一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国.软件从业人员分为初级程序员.高级程序员.系统分析员 ...

  5. 计算机软件水平考试程序员之程序设计知识点汇总,软考程序员常考知识点汇总.docx...

    软考程序员常考知识点汇总软考程序员常考知识点汇总 2015年软考程序员考试知识点FoxPro程序设计 1.命令文件的建立.修改和运行 (1)命令文件的建立与修改MODIFYCOMMAND[/?][IN ...

  6. c语言实参的默认存储类型,2016下半年软考程序员练习习题及答案解析(一)

    下面是由希赛小编整理的2016下半年软考程序员练习习题及答案解析(一),提供给大家学习,希望能帮助学友们.具体内容如下: 练习习题 1.如果某个函数在定义时,省略了存储类型,则默认的存储类型是() A ...

  7. 计算机程序C语言若初始数为48,2016年计算机软考程序员模拟选择试题

    46.设有定义:"char s[12]={"string"};" 则printf("%d\n",strlen(s));的输出是( ) A. ...

  8. 2016软考程序员试题选择题(含答案解析)

    2016软考程序员试题选择题(含答案解析) 一.选题题 1.二进制语言是属于() A.面向机器语言 B.面向问题语言 C.面向过程语言 D.面向汇编语言 [解析]人们研制了许许多多计算机程序设计语言, ...

  9. 软考 程序员教程-第三章 数据库基础知识

    软考 程序员教程-第三章 数据库基础知识 第三章 数据库基础知识 3.1 基本概念 数据库系统(DataBase System,DBS)由数据库(DataBase,DB).硬件.软件和人员4大部分组成 ...

最新文章

  1. mac上的终端bash命令
  2. if...else if switch分支结构
  3. 元素失去焦点(隐藏软键盘)
  4. FisherFace 进行人脸分裂
  5. SAP ABAP STOP,EXIT,CHECK,RETURN
  6. Crontab使用详解
  7. Java FileReader InputStreamReader类源码解析
  8. linux6.5虛擬機镜像,CentOS 7.2 自动安装光盘实验全过程记录
  9. 两台linux之间互传php脚本,linux下两台服务器实现同步的方法
  10. keepalived高可用+nginx负载均衡
  11. 国外一教授坦言,用这方法能迅速成为python程序员,但都不愿意说
  12. java 方法调用关系_JAVA方法调用
  13. 语音识别技术发展史与行业最佳实践全解析
  14. 常用 shell sql 命令
  15. java找出两个共有,Java-找出两个单链表的首个公共节点
  16. 计算机操作系统进程管理总结
  17. 对 MMO 游戏的调研
  18. [转载]Android实现更换皮肤功能
  19. Splunk 常见问题解答
  20. [Vulhub] ThinkPHP漏洞合集

热门文章

  1. 机会往往留给有准备的人
  2. 食物相克对照表(完整版)
  3. 西门子rwd60参数设置调试手册_西门子温度控制器RWD60 RWD62 RWD68安装调试说明
  4. emlog评论ajax,emlog评论:获取评论用户操作系统与浏览器信息
  5. torch.mul()
  6. 学习怎么磁盘恢复?_ ?实验1
  7. 借助了进口的俄罗斯“汽车场”电子对抗系统
  8. java计算机毕业设计智慧后勤系统源码+mysql数据库+系统+部署+lw文档
  9. 应届生应聘一些要注意的(from http://forum.eet-cn.com/)
  10. 计算机音乐谱大全心如止水,心如止水简谱 ICE PAPER演唱 孙世彦制谱