《计算思维导论》的算法选择与表现初探.docVIP

《计算思维导论》的算法选择与表现初探.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《计算思维导论》的算法选择与表现初探.doc

  《计算思维导论》的算法选择与表现初探 郭元辉 西华师范大学实验中心 摘要:随着计算机技术及应用的普及与提高,计算思维作为新一轮大学计算机基础教育的前沿课题和内容在理论与实践中讨论、尝试和渐进发展,《计算思维导论》单独开设或融合《大学计算机基础》已逐步在一些学校作为选修课、必修课展开。本文就实际教学中的算法选择与语言表现进行初步探讨并给出基本框架。 .jyqkanujan(1887-1920)给出15位精度的公式: 表现:1、VB、VC程序设计语言(本文选VB); 2、前导:数据类型、变量、常用函数; 3、print命令求解。此一步,解决计算器的所有计算。算法2:数值算法(近似解) 的级数计算公式有多钟,1637年Leibniz给出的公式: 表现:1、概念:近似解的截断误差[13]。 2、前导:条件分支、循环概念及语句。 3、难点:有限循环、无限循环(死循环)、空循环的处理。已知循环次数与未知循环次数(条件判断)的程序实例。当级数项符号一正一负交替出现时,用-1乘之的技巧。 4、蕴含迭代与递归的形式。 算法3:Monte Carlo method(概率法)、1777年Buffon用投针实验计算了π ,这是一种概率的方法。假设在单位正方形区域画上1/4的单位圆,往正方形里投针m(足够多)次,统计掉在圆内的数目n,那么根据概率的定义,针掉在圆内的概率p = n /m,也等于面积之比:由此: π ≈ 4*n / m 表现:1、概念:随机数的产生及应用。 2、利用V B的随机函数编程,圆内的关系为点(x,y)满足:x2 + y2 lt;=1。 3、蕴含数学问题的求解,不仅仅依赖计算,也依赖于样本的分布。有的问题,例如成绩排序,本生就是处理和实现分布。 问题二:迭代与递归 迭代与递归本质上是与一个无穷序列0 1 2 1 , , , , , , n n s s s s s+ ? ?相关的两种计算方式,同一个关系: 1 ( ) n n s F s + = ,若取n=0,1,2,…则为迭代;取n=n,n-1,…,0则为递归。使用递归,由于函数的自身调用,在未得到初值时会占用内存空间。原则上两种方法可以转换,但对具体问题,有的迭代适合,有的递归适合。 算法1:N!=N*(N-1)*…2*1 分别用迭代与递归求10!。 表现:1、与S=1+2+…+n比较,迭代中初值的不同。 2、概念:递归中内存的占用。 3、N!的值:当N较大时是一个很大的数。由此加深对整形、长整型、双精度等数据类型的认识及处理。 算法2:已知: f (x) = 5.23? x2 , a=2,b=3,f(a)*f(b)lt;0,用二分法求5.23的平方根,精确到10?6。(迭代进阶) 表现:(程序化的二分法思想) 1、c=(a+b)/2; 2、计算f(c),如果|f(c)|lt; 10?6那么 结束 否则 下一步; 3、如果 f(a)*f(c)lt;0 那么 b=c 否则 a=c; 4、转1 。 5、拓展:进一步牛顿迭代法进行计算。将迭代次数两相比较,可以看到牛顿迭代法收敛速度快很多(平方收敛)。 算法3:用欧几里得辗转相除法求(12,26)的最大公因子。(递归进阶)表现:1、设函数为gcd(m,n),内容: 2、计算m/n=q+r/n,q为商,r为余;(蕴含大量应用实例) 3、如果 r=0 那么 返回 n,结束。否则 下一步; 4、m=n;n=r;递归调用 gcd(m,n)。 5、拓展:可以引申举例著名的汉罗塔递归,对汉罗塔问题,递归是最好的方法。 问题三:整除与求模 在《程序设计》的教科书里基本都会见到求水仙花数、数的拆分、求100以内的素数、十进制数转换成二进制数等,它们都属于整除与求模(余数)的问题,多用穷举法。 算法1:判断一个三位数X是否水仙花数? 表现:1、所谓水仙花数是指一个三位数等于其每位数的立方之和。例:371 = 33 + 73 +13; 2、设x为ab c三位,则:a=x\10 0,b =(x-10 0 *a),a=b mo d10,b=b\10; 3、判断 是否成立。 4 、拓展:x 是否素数的判断归结为循环处理x m o dp,(p=2,3,…,x-1),只要有一个为0便确定不是素数;x 的二进制转换则是不断计算整除与求模:x=x\2, i q =x mod 2;i=0,1,2…n,至x=0结束。将n n 1... 1 0 q

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档