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)

猜你喜欢

转载自www.cnblogs.com/viete/p/12427954.html
今日推荐