首页 > 编程语言 > 详细

Java/JavaScript/C/Python递归方法实现斐波那契数列耗时对比

时间:2020-03-06 19:13:11      阅读:79      评论:0      收藏:0      [点我收藏+]

 

斐波那契数列(Fibonacci sequence),指的是这样一个数列:1、1、2、3、5、8、13、21、34、……,这个数列从第3项开始,每一项都等于前两项之和。

 

递归方法实现耗时对比

用Java/JavaScript/C/Python递归方法实现斐波那契数列耗时对比

 

使用最基本的递归方法,计算第35、40、45、50个数字的耗时,单位毫秒。

  35  40 45 50
计算结果
9227465
102334155
1134903170
12586269025
Java  31 338 3754
44567
C
51
576
6606
67496
JavaScript
93
990
10919
131531
Pythone
2604
27927
316055
 3661294

耗时结果: Java > C > JavaScript > Python

毫无疑问,与上一个普通循环判断测试一样,Java依然遥遥领先,Python最慢,第50个数字耗时已经超过1小时了,需要使用递归的小伙伴要慎重了!

 

附代码

Java

public class Fibonacci {
    public static void main(String[] args){
        long start = System.currentTimeMillis();
        System.out.println(fibonacci(50));
        System.out.println(System.currentTimeMillis() - start);
    }

    public static long fibonacci(int n){
        if (n <= 1){
            return n;
        }
        return fibonacci(n-1) + fibonacci(n-2);
    }
}

 

C

#include <stdio.h>
#include <time.h>

long long fibonacci(int n);
long long fibonacci(int n) 
{
    if (n <= 1){
            return n;
        }
    return fibonacci(n-1) + fibonacci(n-2);
}

int main ()
{
    clock_t       start,   finish;   
    double       elapsed_time;
    start=clock();
    printf("%lld \n", fibonacci(50));
    finish = clock();   
    printf("%d \n", finish);
    return 0;
}

 

JavaScript

start = new Date().getTime();

function fibonacci(n){
    if (n <= 1){
        return n;
    }
    return fibonacci(n-1) + fibonacci(n-2);
}

console.log(fibonacci(50))
console.log(new Date().getTime() - start);

 

Python

import time


start = time.time()
def fibonacci(n):
  if n <= 1:
    return n
  return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(50))  
print(time.time() - start)

 

Java/JavaScript/C/Python递归方法实现斐波那契数列耗时对比

原文:https://www.cnblogs.com/viete/p/12427954.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!