基于MATLA的数据结构与算法_典型算法逻辑.ppt

基于MATLA的数据结构与算法_典型算法逻辑.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于MATLA的数据结构与算法_典型算法逻辑

递归算法(阶乘) 执行结构验证 * * 兔子的谜惑 在第一个月时,只有一对小兔子,过了一个月,那对兔子成熟了,在第三个月时便生下一对小兔子,这時有两对兔子。再过一个月,成熟的兔子再生一对小兔子,而另一对小兔子长大,有三对小兔子…… 如果您一直做下去,你会发现兔子数目会组成数列:1,1,2,3,5,8,13,21……,這就是著名的斐波那契数列。 * * 有关Fibonacci 斐波那契(Leonardo Fibonacci, 约1175-约1240)也许是在生活在丢番图(Diophantos)之后费尔马(Pierre de Fermat)之前这2000年间欧洲最杰出 的数论学家。我们对他的生平知道得很少。他出生在意大利那个后来因为伽里略做过落体实验而著名的斜塔所在的城市里,现在那里还有他的一座雕像。他年轻是跟随经商的父亲在北非和欧洲旅行,大概就是由此而学习到了世界各地不同的算术体系。在他最重要的著作《算 盘书》(Liber Abaci,写于1202年)中,引进了印度-阿拉伯数码(包 括0)及其演算法则。数论方面他在丢番图方程和同余方程方面有重要 贡献。 * * 问题提出:使用递推算法思想, 输出前n个斐波那契数列。 * * 斐波那契数列的算法实现分析 递推过程: 1 1 2 3 5 8…… (第1次) a b + c a b + a b + c c a b + c (第2次) (第3次) (第4次) 递归算法(Fibonacci数列) 执行结果验证 * 上海市香山中学 基于MATLAB 《数据结构与算法》 延边大学 信息管理专业(13级) 崔基哲 求最大公约数的欧几里得算法 验证给定数组中的所有元素是否唯一 递归算法(阶乘、Fibonacci数列) MATLAB编程之基础算法 算 法 案 例 ——辗转相除法(欧几里得算法) 3 5 9 15 [问题1]:在小学,我们已经学过求最大公约数的知识,你能求出18与30的最大公约数吗? 18 30 2 3 ∴18和30的最大公约数是2×3=6. 先用两个数公有的质因数连续去除,一直除到所得的商是互质数为止,然后把所有的除数连乘起来. 辗转相除法(欧几里得算法) 用辗转相除法求8251和6105的最大公约数 第一步 用两数中较大的数除以较小的数,求得商和余数 8251=6105×1+2146 结论: 8251和6105的公约数就是6105和2146的公约数,求8251和6105的最大公约数,只要求出6105和2146的公约数就可以了。 第二步 对6105和2146重复第一步的做法 6105=2146×2+1813 同理6105和2146的最大公约数也是2146和1813的最大公约数。 完整的过程 8251=6105×1+2146 6105=2146×2+1813 2146=1813×1+333 1813=333×5+148 333=148×2+37 148=37×4+0 例2 用辗转相除法求225和135的最大公约数 225=135×1+90 135=90×1+45 90=45×2 显然37是148和37的最大公约数,也就是8251和6105的最大公约数 显然45是90和45的最大公约数,也就是225和135的最大公约数 利用辗转相除法求最大公约数的步骤如下: 第一步:用较大的数m除以较小的数n得到一个商q0和一个余数r0;(m=n×q0+r0) 第二步:若r0=0,则n为m,n的最大公约数;若r0≠0,则用除数n除以余数r0得到一个商q1和一个余数r1;(n=r0×q1+r1) 第三步:若r1=0,则r0为m,n的最大公约数;若r1≠0,则用除数r0除以余数r1得到一个商q2和一个余数r2;(r0=r1×q2+r2) …… 依次计算直至rn=0,此时所得到的rn-1 即为所求的最大公约数。 思考1:从上面的步骤中可以得出辗转相除法算法步骤为: S1:给定两个正整数m,n S2:用大数除以小数,计算m除以n所得的余数; S3:除数变成被除数,余数变成除数,即 m=n , n=r S4:重复S2,直到余数为0,即 若r=0,则m, n 的最大公约数为m,否则返回S2 辗转相除法是一个反复执行直到余数等于0停止的步骤,这实际上是一个循环结构。 8251=6105×1+2146 6105=2146×2+1813 2146=1813×1+333 1813=333×5+148 333=148×2+37 148=37×4+0 m = n × q + r 用程序框图表示出右边的过程 r=m MOD n m = n n = r r=0? 是 否 MA

文档评论(0)

tonggong82445 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档