学习网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 35372|回复: 0
收起左侧

高级语言程序设计 - 吉林大学-9.3.3 递归思想

[复制链接]
发表于 1-26 01:41 | 显示全部楼层 |阅读模式
前面呢咱们编了三个递归的函数这个递归怎么想呢你拿到问题怎么就给它编成递归的函数呢这样递归程序设计递归的思想体现的是什么呢咱们这个分一个问句不用不是用自顶向下逐步求精吗把问题分解 咱们在用注目求精的原则分解问题的时候把一个问题分解成若干子问题这些子问题里头 一步步往下分解分解到某一步 发现了有一个子问题跟原始问题或者跟它高层的某一个问题 它的特征属性差不多就是参数不太一样比如说刚才勒让德多样式那个它求n-1次勒让德多样式差不多求n-2次勒让德多样式跟求n次也差不多只不过是次数减低了规模比原来小了这时候你就可以考虑到递归用原始问题或者前一个高层某一个问题那个分析算法跟那个底层问题进行同样的分析这样你就可以采取递归的办法来解决这个问题也就是说你把高层问题设计成一个函数底层问题对高层问题那个函数的一个递归调用那么递归程序是这么想的也可以这么编那么编写递归程序啊有几点要注意第一点递归程序它程序漂亮好看也好读风格优美 但是执行效率低  
  
比如说求阶乘的那个问题勒让德多样式的问题也好那你得用循环写出那个程序 是不是好看它呢跟原始问题对照性十分高这是没问题的但是执行效率低 为什么咱就说求勒让德多样式这个函数你要改用循环编这个程序像裴波那契序列似的用循环模来编的话那么他就是个循环一次次记录前面的项 这个运算量而用递归来写你就想计算十次勒让德多样式的时候你要计算九次和八次的九次八次都得算吧 分别算计算九次的时候还得计算八次和七次的时候八次已经算过一次了在这还得算一次计算八次的时候还得计算七次和六次七次算过一次了在这还得算一次这样重复计算特别多所以呢它执行效率低执行效率低怎么办呢递归程序好写好分析经常的呢写程序先用递归写出来然后把递归的程序再转换成非递归的这么做使得提高执行效率第二点要注意的很多程序比如说n的阶乘也好啊 x的n次方也好啊勒让德多样式 可以用循环写也可以用递归写但是有些程序用循环写出很困难只好用递归来写有些程序用递归能写出来用循环写出来很困难不太容易写甚至用递归写写出来 用循环写写不出来这是前边整编程序那个角度来看现在咱们考虑 就是针对递归程序一定要注意那个终结条件程序运行时候得能终结啊不能终结了 无限循环下去不成了死循环了么这肯定是不对的所以不能无限递归下去程序一定能终结 那个终结条件设什么条件 你设到哪很重要前面咱们那几个程序 终结条件n等于0的时候终结 n等于1的时候终结再一个要注意的 使用全局量要特别小心用不好单元发生冲突将导致程序出错全局量在递归程序里用你就想每次递归的时候都用这个量下次递归进来把前一次递归保存的值下次递归进来把前一次递归保存的值冲掉了那个值没用可以 那个值有用那程序就错了所以使用全局量要特别特别的小心有关递归的思想咱们也就介绍到这[此为课程内容大纲,相关资源下载地址请在论坛搜索标题名称]

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|学习资源网 ( 粤ICP备16100991号-2 )

GMT+8, 12-3 11:12 , Processed in 0.146123 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc. Template By ¡¾Î´À´¿Æ¼¼¡¿¡¾ www.wekei.cn ¡¿

快速回复 返回顶部 返回列表