- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第06章过程(补充程序设计举例)070406
补充1—程序设计算法 递推法 数列的后项可由前面一项或多项求得 典型题:Fibonacci数列及有关问题 补充2—程序设计典型题 因数有关问题 完数、多因子完备数 同构数:1,5,6,25(同平方右边) 对称数(回文数) 完全平方数:1、4、9、14、25 高精度除法:113/355小数点后30位 素数(质数):自定义函数 递推法 Fibonacci数列:1,1,2,3,5,8,13,21,…F1=1,F2=1,Fn=Fn-2+Fn-1 算法1:使用数组f(n)=f(n-2)+f(n-1) 算法2:使用两个简单变量,每次求两项f1=1, f2=1; f1=f1+f2, f2=f2+f1 算法3:使用三个简单变量,每次求一项f1=1, f2=1; f=f1+f2, f1=f2, f2=f 例 输出Fibonacci数列的前50项(程序1) Private Sub Command1_Click() Dim f(50) f(1) = 1: f(2) = 1 Print f(1): Print f(2) For n = 3 To 50 f(n) = f(n - 2) + f(n - 1) Print f(n) Next End Sub程序 例 输出Fibonacci数列的前50项(程序2) Private Sub Command1_Click() f1 = 1: f2 = 1 Print f1: Print f2 For n = 2 To 25 f1 = f1 + f2: f2 = f2 + f1 Print f1: Print f2 Next End Sub 例 输出Fibonacci数列的前50项(程序3) Private Sub Command1_Click() f1 = 1: f2 = 1 Print f1: Print f2 For n = 3 To 50 f = f1 + f2: Print f f1 = f2: f2 = f Next End Sub 求Fibonacci数列的 第45项 前50项之和 前50项中所有奇数项之和 前50项中所有偶数项之和 求数列的前30项:前3项都是1,从第4项起第项都其前3项之和。 求s=1/2+3/5+8/13+21/34+…(30项) 递推数列1,2,3,5,8,14,21,34,…的前60项做成的30个分数之和 求s=1/2+2/3+3/5+5/8+8/13+…(30项) 递推数列1,2,3,5,8,14,21,34,…的前31项做成的30个分数之和 同构数:一个整数出现在其平方右边 1 1 5 25 6 36 25 625 76 5776 376 141376 … 程序1 Private Sub Command1_Click() For x = 1 To 99999 s = Trim(Str(x)): t = Trim(Str(x * x)) l = Len(s) If Right(t, l) = s Then Print x, x * x Next End Sub 程序2 Private Sub Command1_Click() For x = 1 To 99999 l = Int(Log(x) / Log(10)) + 1 y = x * x If y - Int(y / 10 ^ l) * 10 ^ l = x Then Print x, x * x Next End Sub 程序3 Private Sub Command1_Click() For x = 1 To 99999 y = x * x Select Case x Case Is 10 m = 10 Case Is 100 m = 100 Case Is 1000 m = 1000 Case Is 10000 m = 10000 Case Else m = 100000 End Select If y - Int(y / m) * m = x Then Print x, y Next End Sub 对称数(回文数):1、11、121、1221 Private Sub Command1_Click() n = 0 For x = 1000 To 9999 s = Trim(Str(x)) If s = StrReverse(s) Then
文档评论(0)