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

 

斐波那契数列(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)

 

posted @ 2020-03-06 18:01  不识少年愁  阅读(447)  评论(0编辑  收藏  举报