VB程序题 斐波那契数列的前两项是1,1, 其后每一项都是前两项之和,求:10000000最大的斐数

VB程序题 斐波那契数列的前两项是1,1, 其后每一项都是前两项之和,求:10000000最大的斐数,第1张

Private Sub Form_Load()

Dim a As Long

a = 1

b = 1

Do While 1

S = a + b

If S > 10000000 Then

S = S - a

Exit Do

End If

b = a

a = S

Loop

MsgBox S

End Sub

public class Fibonacci {

public static void main(String args[]){

int n,fn;//n为第n项,fn为第n项的值

javautilScanner s = new Scanner(Systemin);

n=snextInt();

fn=function(n);

Systemoutprintln("斐波那契数列第"+n+"项为:"+fn);

}

public static int function(int n){

if(n==1 || n==2) return 1;

return function(n-1)+function(n-2);

}

}

希望能帮到你,其实和c语言是一样一样的。。

public static void main (String args[]){

double sum=0, tmp;

boolean sign=false;

for(int i=1; i<20; i++){

if(sign){

sign=false;

tmp=-1(2i-1);

}else{

sign=true;

tmp=2i-1;

}

sum+=1/tmp;

Systemoutprintln(" "+tmp);

}

Systemoutprintln("sum="+sum); //保留小数用DecimalFormat格式化一下

}

公式法、累加法、累乘法、待定系数法、对数变换法、迭代法、数学归纳法、换元法、不动点法、特征根的方法等等。

类型一

归纳—猜想—证明

由数列的递推公式可写出数列的前几项,再由前几项总结出规律,猜想出数列的一个通项公式,最后用数学归纳法证明.

类型二

“逐差法”和“积商法”

(1)当数列的递推公式可以化为an+1-an=f(n)时,取n=1,2,3,…,n-1,得n-1个式子:

a2-a1=f(1),a3-a2=f(2),…,an-an-1=f(n-1),

且f(1)+f(2)+…+f(n-1)可求得时,两边累加得通项an,此法称为“逐差法”.

(2)当数列的递推公式可以化为an+1/an=f(n)时,令n=1,2,3,…,n-1,得n-1个式子,即

a2/a1=f(1),a3/a2=f(2),a4/a3=f(3),…,an/an-1=f(n-1),且f(1)f(2)f(3)…f(n-1)可求得时,两边连乘可求出an,此法称为“积商法”.

类型三

构造法

递推式是pan=qan-1+f(n)(p、q是不为零的常数),可用待定系数法构造一个新的等比数列求解.

类型四

可转化为类型三求通项

(1)“对数法”转化为类型三.

递推式为an+1=qank(q>0,k≠0且k≠1,a1>0),两边取常用对数,得lgan+1=klgan+lgq,令lgan=bn,则有bn+1=kbn+lgq,转化为类型三.

(2)“倒数法”转化为类型三.

递推式为商的形式:an+1=(pan+b)/(qan+c)(an≠0,pq≠0,pc≠qb).

若b=0,得an+1=pan/(qan+c).因为an≠0,所以两边取倒数得1/an+1=q/p+c/pan,令bn=1/an,则bn+1=(c/p)bn+q/p,转化为类型三.

若b≠0,设an+1+x=y(an+x)/qan+c,与已知递推式比较求得x、y,令bn=an+x,得bn+1=ybn/qan+c,转化为b=0的情况.

类型五

递推式为an+1/an=qn/n+k(q≠0,k∈N)

可先将等式(n+k)an+1=qnan两边同乘以(n+k-1)(n+k-2)…(n+1),得(n+k)(n+k-1)(n+k-2)… (n+1)an+1=q(n+k-1)(n+k-2)…(n+1)nan,令bn=(n+k-1)(n+k-2)…(n+1)•nan,则bn+1= (n+k)(n+k-1)(n+k-2)…(n+1)an+1.

从而bn+1=qbn,因此数列{bn}是公比为q,首项为b1=k(k-1)(k-2)…2•1•a1=k!a1的等比数列,进而可求得an.

总之,由数列的递推公式求通项公式的问题比较复杂,不可能一一论及,但只要我们抓住递推数列的递推关系,分析结构特征,善于合理变形,就能找到解决问题的有效途径.

类型一归纳—猜想—证明

由数列的递推公式可写出数列的前几项,再由前几项总结出规律,猜想出数列的一个通项公式,最后用数学归纳法证明.

例1设数列{an}是首项为1的正项数列,且(n+1)a2n+1-nan2+an+1an=0(n=1,2,3,…),则它的通项公式是an=______________.(2000年全国数学卷第15题)

解:将(n+1)a2n+1-nan2+an+1an=0(n=1,2,3,…)分解因式得(an+1+an)〔(n+1)an+1-nan〕=0.

由于an>0,故(n+1)an+1=nan,即an+1=n/(n+1)an.

因此a2=(1/2)a1=(1/2),a3=(2/3)a2=(1/3),….猜想an=(1/n),可由数学归纳法证明之,证明过程略.

类型二“逐差法”和“积商法”

(1)当数列的递推公式可以化为an+1-an=f(n)时,取n=1,2,3,…,n-1,得n-1个式子:

a2-a1=f(1),a3-a2=f(2),…,an-an-1=f(n-1),

且f(1)+f(2)+…+f(n-1)可求得时,两边累加得通项an,此法称为“逐差法”.

例2已知数列{an}满足a1=1,an=3n-1+an-1(n≥2),证明:an=(3n-1)/2.

(2003年全国数学卷文科第19题)

证明:由已知得an-an-1=3n-1,故

an=(an-an-1)+(an-1-an-2)+…+(a2-a1)+a1=3n-1+3n-2+…+3+1=3n-1/2.

所以得证.

(2)当数列的递推公式可以化为an+1/an=f(n)时,令n=1,2,3,…,n-1,得n-1个式子,即

a2/a1=f(1),a3/a2=f(2),a4/a3=f(3),…,an/an-1=f(n-1),且f(1)f(2)f(3)…f(n-1)可求得时,两边连乘可求出an,此法称为“积商法”.

例3(同例1)(2000年全国数学卷第15题)

另解:将(n+1)a2n+1-nan2+an+1an=0(n=1,2,3,…)化简,得(n+1)an+1=nan,即

an+1/an=n/(n+1).

故an=an/an-1•an-1/an-2•an-2/an-3•…•a2/a1=n-1/n•n-2/n-1•n-3/n-2• … •1/2=1/n.

类型三构造法

递推式是pan=qan-1+f(n)(p、q是不为零的常数),可用待定系数法构造一个新的等比数列求解.

例4(同例2)(2003年全国数学卷文科第19题)

另解:由an=3n-1+an-1得3•an/3n=an-1/3n-1+1.

令bn=an/3n,则有

bn=1/3bn-1+1/3. ()

设bn+x=1/3(bn-1+x),则bn=1/3bn-1+1/3x-x,与()式比较,得x=-1/2,所以bn-1/2=1/3(bn-1-1 /2).因此数列{bn-1/2}是首项为b1-1=a1/3=-1/6,公比为1/3的等比数列,所以bn-1/2=-1/6•(1/3)n-1,即 an/3n-1/2=-1/6(1/3)n-1.故an=3n〔1/2-1/6(1/3)n-1〕=3n-1/2.

例5数列{an}中,a1=1,an+1=4an+3n+1,求an.

解:令an+1+(n+1)x+y=4(an+nx+y),则

an+1=4an+3nx+3y-x,与已知an+1=4an+3n+1比较,得

3x=3, 所以

x=1,

3y-x=1, y=(2/3).

故数列{an+n+(2/3)}是首项为a1+1+(2/3)=(8/3),公比为4的等比数列,因此an+n+(2/3)=(8/3)•4n-1,即

an=(8/3)•4n-1-n-(2/3).

另解:由已知可得当n≥2时,an=4an-1+3(n-1)+1,与已知关系式作差,有an+1-an=4(an-an-1)+3,即an+1- an+1=4(an-an-1+1),因此数列{an+1-an+1}是首项为a2-a1+1=8-1+1=8,公比为4的等比数列,然后可用“逐差法” 求得其通项an=(8/3)•4n-1-n-(2/3).

类型四可转化为

类型三求通项

(1)“对数法”转化为

类型三.

递推式为an+1=qank(q>0,k≠0且k≠1,a1>0),两边取常用对数,得lgan+1=klgan+lgq,令lgan=bn,则有bn+1=kbn+lgq,转化为

类型三.

例6已知数列{an}中,a1=2,an+1=an2,求an.

解:由an+1=an2>0,两边取对数得lgan+1=2lgan.令bn=lgan则bn+1=2bn.因此数列{bn}是首项为b1=lga1=lg2,公比为2的等比数列,故bn=2n-1lg2=lg22n-1,即an=22n-1.

(2)“倒数法”转化为

类型三.

递推式为商的形式:an+1=(pan+b)/(qan+c)(an≠0,pq≠0,pc≠qb).

若b=0,得an+1=pan/(qan+c).因为an≠0,所以两边取倒数得1/an+1=q/p+c/pan,令bn=1/an,则bn+1=(c/p)bn+q/p,转化为

类型三.

若b≠0,设an+1+x=y(an+x)/qan+c,与已知递推式比较求得x、y,令bn=an+x,得bn+1=ybn/qan+c,转化为b=0的情况.

例7在数列{an}中,已知a1=2,an+1=(3an+1)/(an+3),求通项an.

解:设an+1+x=y(an+x)/an+3,则an+1=(y-x)an+(y-3)x/an+3,结合已知递推式得

y-x=3, 所以

x=1,

y-3=1, y=4,

则有an+1+1=4(an+1)/an+3,令bn=an+1,则bn+1=4bn/bn+2,求倒数得1/bn+1=1/2•1/bn+1/4,即1/bn+1-1/2=1/2(1/bn-1/2).

因此数列{1/bn-1/2}是首项为1/b1-1/2=1/a1+1-1/2=-1/6,公比为1/2的等比数列.

故1/bn-1/2=(-1/6)(1/2)n-1,从而可求得an. 求数列的前n项和是高中数学《数列》一章的教学重点之一,而对于一些非等差数列,又非等比数列的某些数列求和,是教材的难点。不过,只要认真去探求这些数列的特点。和结构,也并非无规律可循。

典型示例:

1、 用通项公式法:

规律:能用通项公式写出数列各项,从而将其和重新组合为可求数列和。

例1:求5,55,555,…,的前n项和。

解:∵an= 5 9(10n-1)

∴Sn = 5 9(10-1)+ 5 9(102-1) + 5 9(103-1) + … + 5 9(10n-1)

= 5 9[(10+102+103+…+10n)-n]

= (10n+1-9n-10)

2、 错位相减法:

一般地形如{an•bn}的数列,{ an }为等差数列, { bn }为等比数列,均可用错位相减法求和。

例2:求:Sn=1+5x+9x2+••••+(4n-3)xn-1

解:Sn=1+5x+9x2+••••+(4n-3)xn-1 ①

①两边同乘以x,得

x Sn=x+5 x2+9x3+••••+(4n-3)xn ②

①-②得,(1-x)Sn=1+4(x+ x2+x3+••••+ )-(4n-3)xn

当x=1时,Sn=1+5+9+••••+(4n-3)=2n2-n

当x≠1时,Sn= 1 1-x [ 4x(1-xn) 1-x +1-(4n-3)xn ]

3、 裂项抵消法:

这一类数列的特征是:数列各项是等差数列某相邻两项或几项的积,

一般地,{an}是公差为d的等差数列,则:

即裂项抵消法, 多用于分母为等差数列的某相邻k项之积,而分子为常量的分式型数列的求和,对裂项抵消法求和,其裂项可采用待定系数法确定。

例3:求 1 3, 1 1 5, 1 3 5, 1 63之和。

解:

4、 分组法:

某些数列,通过适当分组,可得出两个或几个等差数列或等比数列,从而可利用等差数列或等比数列的求和公式分别求和,从而得出原数列之和。

例4:求数列 的前n项和。

解:

5、 聚合法:

有的数列表示形式较复杂,每一项是若干个数的和,这时常采用聚合法,

先对其第n项求和,然后将通项化简,从而改变原数列的形式,有利于找出解题办法。

例5:求数列2,2+4,2+4+6,2+4+6+8,…,2+4+6+…+2n,…的前n项和

解:∵an=2+4+6+…+2n= n(n+1)=n2+n

∴Sn=(12+1)+(22+2)+(32+3) +……+( n2+n)

=(12+22+32+…+ n2)+(+2+3+…+n)

= n(n+1)(2n+1)+ n(n+1)

= 1 3n(n+1)(n+2)

6、 反序相加法:

等差数列前n项和公式的推导,是先将和式中各项反序编排得出另一个和式,然后再与原来的和式对应相加,从而解得等差数列的前n项和公式,利用这种方法也可以求出某些数列的前n项和。

例6:已知lg(xy)=a,求S,其中

S=

解: 将和式S中各项反序排列,得

将此和式与原和式两边对应相加,得

2S= + + • • • +

(n+1)项

=n(n+1)lg(xy)

∵ lg(xy)=a ∴ S= n(n+1)a

以上一个6种方法虽然各有其特点,但总的原则是要善于改变原数列的形式结构,使其能进行消项处理或能使用等差数列或等比数列的求和公式以及其它已知的基本求和公式来解决,只要很好地把握这一规律,就能使数列求和化难为易,迎刃而解。

斐波那契数列自第三个数开始,每个数均为之前两个数的和。

至少有两种方法来实现它。

最常见的利用迭代的方法,其核心思路是

fib(n) = fib(n-1) + fib(n-2)

而在n<2时直接,没有n-2,因此直接返回1:

def fib(num): return 1 if n<2 else fib(num-1) + fib(num-2)

这是一种很简单的实现。在阶梯数不大时,它很好用。当阶梯数很大时,因为二次手迭代,会比较慢。因此,可以在计算中保存中间值(1至n-1的阶梯数)来减少计算量:

这种方式在计算阶梯数10000时就可以保持不错的性能。如果需要多次计算该数列,则可以利用对象来保持这个中间值列表,下列代码中,Fibonaci实例只计算未曾计算的阶梯数,在重复调用时它更具优势:

class Fibonaci(object):

history=[1, 1]

def cacl(self, num):

while len(selfhistory) <= num:

selfhistoryappend(selfhistory[-1] + selfhistory[-2])

return selfhistory[num]

if __name__ == '__main__':

fib = Fibonaci()

print(fibcalc(100))

print(fibcalc(32))

print(fibcalc(10000))

以上就是关于VB程序题 斐波那契数列的前两项是1,1, 其后每一项都是前两项之和,求:10000000最大的斐数全部的内容,包括:VB程序题 斐波那契数列的前两项是1,1, 其后每一项都是前两项之和,求:10000000最大的斐数、如何用编程求数列问题、JAVA编程题:求数列1,-1/3,1/5,-1/7,…前n项的和,数据类型采用double,保留8位小数。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10121283.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存