当前位置: 首页 > 后端技术 > Python

斐波那契数列计算性能对比:Python、Java、Go

时间:2023-03-26 13:17:23 Python

本文采用递归的方法计算斐波那契数列中的第38项,用于三种计算机语言的计算性能。适用于:Python、Java、Go。我们用递归的方法求解斐波那契数列的第n项f(n)。算法描述如下:functionfib(n)ifn=0return0ifn=1return1returnfib(n?1)+fib(n?2)为了公平起见,我们用三个程序来计算f(38),运行100次,取平均耗时作为性能比较。Python程序如下:#-*-coding:utf-8-*-#author:Jclian91#place:PudongShanghai#time:16:15importtime#recursivemethoddefrec_fib(n):ifn<=1:returnnelse:returnrec_fib(n-1)+rec_fib(n-2)time_cost=0for_inrange(100):#草书法的时间成本t1=time.time()t=rec_fib(38)t2=time.time()time_cost+=(t2-t1)print('结果:%s,平均运行时间:%s'%(t,time_cost/100))Java程序如下:importjava.util.Date;publicclassMain{//主函数publicstaticvoidmain(String[]args){doubletime_cost=0;for(inti=0;i<100;i++){日期开始时间=newDate();//开始时间intn=38;rec_fib(n);日期end_time1=newDate();//结束时间Longcost_time1=end_time1.getTime()-start_time.getTime();//计算时间,返回毫秒数time_cost+=cost_time1;}System.out.println(String.format("平均成本时间为%.3fs。",time_cost*1.0/1000));}//使用递归的方法计算斐波那契数列的第n项publicstaticintrec_fib(intn){if(n==0)return0;如果(n==1)返回1;否则返回rec_fib(n-1)+rec_fib(n-2);}}Go语言如下://rec_fibpackagemainimport("fmt""time")//函数返回第n个斐波那契数funcrec_fib(numint)int{ifnum<=1{returnnum}else{returnrec_fib(num-1)+rec_fib(num-2)}}funcmain(){vartime_costfloat64fori:=0;我<100;i++{t1:=时间。Now()n:=38rec_fib(n)t2:=time.Now()time_cost+=t2.Sub(t1).Seconds()}fmt.Printf("平均成本时间:%f.\n",time_cost/100)}在同一台电脑上运行,得到的结果如下:平均耗时(单位:秒)PythonJavaGo/16.01510.16310.2398可以看出Java在这个程序中表现最好,Go语言略效率比Python慢,但数量级相同,Python的运行时间大约是Go语言的66.7倍本次分享到此结束,感谢阅读~