Think in Java之斐波那契数列

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

可惜本人是文科生,看不懂也不记得那些所谓的数学公式了,以前素材只摘选感兴趣的部分。

我只感兴趣的是后面这几段代码的实现:

    packagecom.tudou.t1; importjava.math.BigInteger; importjava.util.Scanner; /** *斐波那契数列1,2,3,5,8,13,21….[] * *@authorlz * */publicclassFibonacci{ publicstaticvoidmain(String[]args){ fib();//常规算法 System.out.println(compute2(5));//计算第n个斐波那契数列的数 fibHign();//Java语言程序(高精度,约一秒钟计算第20000个数值) } privatestaticvoidfib(){ intx=1,y=1; System.out.println(x); for(inti=1;i<=5;i++){ System.out.println(y); y=x+y; x=y-x; } } //n为第n个斐波那契数列的数 publicstaticBigIntegercompute2(intn){ if(n==1||n==2){ returnBigInteger.ONE; } BigIntegernum1=BigInteger.ONE; BigIntegernum2=BigInteger.ONE; BigIntegerresult=BigInteger.ZERO; for(inti=2;i<n;i++){ result=num1.add(num2); num2=num1; num1=result; } returnresult; } //Java语言程序(高精度,约一秒钟计算第20000个数值) privatestaticvoidfibHign(){ Scanners=newScanner(System.in); System.out.print(“请输入一个整数:”); intn=s.nextInt(); do{ cul(n); n=s.nextInt(); }while(n>0);//当n<=0时终止 } privatestaticvoidcul(intn){ BigIntTb=newBigIntT(); BigIntTa=newBigIntT(); b.formatBigInt(“1”); a.formatBigInt(“2”); if(n==1||n==2){ System.out.println(1); return; } inti=3; for(;i<=n;i++){ if(i%2>0) b.add(a); elsea.add(b); } BigIntTt=null; if(i%2>0) t=b; elset=a; for(intj=t.getPos();j<100000;j++) System.out.print(t.getBase(j)); System.out.println(); } } classBigIntT{ intmax=100000; privatebyte[]base=newbyte[max]; privateintpos=max; publicvoidformatBigInt(Stringarr){ intl=arr.length(); if(l==0) return; inttmp=l-1; for(inti=max-1;i>=max-l;i–){ base[i]=(byte)(arr.charAt(tmp–)-‘0’); pos–; } } publicvoidadd(BigIntTright){ intbigger=this.getPos()>right.getPos()?right.getPos():this.getPos(); pos=bigger; for(inti=max-1;i>=pos-2;i–){ intt=this.base[i]+right.getBase(i); if(t>=10){ this.base[i]=(byte)(t%10); this.base[i-1]+=t/10; if(i-1<pos) pos=i-1; }else{ this.base[i]=(byte)t; } } } publicintgetPos(){ returnpos; } publicbytegetBase(intindex){ returnbase[index]; } }

控制台输出结果为:

1 1 2 3 5 8 5

请输入一个整数:500

139423224561697880139724382870407283950070256587697307264108962948325571622863290

691557658876222521294125

感兴趣的朋友,可以玩一下。偶尔玩玩这些也很过瘾呢。

而其实你还爱着他,你一点也不好。

Think in Java之斐波那契数列

相关文章:

你感兴趣的文章:

标签云: