预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共19页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

常用算法本讲主要内容1.迭代算法PrivateSubCommand1_Click() Dimx0AsDouble:Dimx1AsDouble DimaAsDouble a=Val(Text1.Text) x0=a/2 x1=(x0+a/x0)/2 Do x0=x1 x1=(x0+a/x0)/2 LoopWhile(Abs(x0-x1)>=0.00001) Text2.Text=x1 EndSubFibonacci数列:其中第n项的计算公式为: Fib(n)=Fib(n-1)+Fib(n-2)2.递推算法PrivateSubCommand1_Click() DimiAsInteger Dimx1AsInteger:Dimx2AsInteger i=9:x2=1 DoWhile(i>0) x1=(x2+1)*2 x2=x1 i=i-1 Loop Text1.Text=x1 EndSub3.穷举算法PrivateSubCommand1_Click() DimaAsInteger DimbAsInteger:DimcAsInteger:DimcountAsInteger Fora=1To5 Forb=1To5 If(a<>b)Then Forc=1To5 If(c<>aAndc<>b)Then count=count+1 print"A"&a&"B"&b&"c"&c printcount EndIf Nextc EndIf Nextb Nexta EndSub4.筛选算法PrivateSubCommand1_Click() Dima(101)AsInteger DimiAsInteger:DimjAsInteger Fori=1To100 a(i)=i Nexti Fori=2ToSqr(100) Forj=i+1To100 If(a(i)<>0Anda(j)<>0)Then If(a(j)Moda(i)=0)Then a(j)=0 EndIf EndIf Nextj Nexti 最小、最大值 在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。 例随机产生10个100~200之间的数,求最大值。 累加、连乘例:求自然对数e的近似值,要求其误差小于0.00001,近似公式为: 该例题涉及两个问题: (1)用循环结构求级数和的问题。本例根据某项值的精度来控制循环的结束与否。 (2)累加:e=e+t循环体外对累加和的变量清零e=0 连乘:n=n*i循环体外对连乘积变量置1n=1 PrivateSubForm_Click() Dimi%,n&,t!,e! e=0:n=1‘e存放累加和、n存放阶乘 i=0:t=1‘i计数器、t第i项的值 DoWhilet>0.00001 e=e+t:i=i+1‘累加、连乘 n=n*i:t=1/n Loop Print"计算了";i;"项的和是";e EndSub5.排序算法折半查找法基本思想:设n个有序数(从小到大)存放在数组a(0)~a(n)中,要查找的数为x。用变量iBot、iTop、iMid分别表示查找数据范围的底部(数组下界)、顶部(数组的上界)和中间,iMid=(iTop+iBot)\2本讲结束,谢谢大家!