簡體   English   中英

如何獲得斐波那契遞歸的時間

[英]How to get time of Fibonacci recursion

我有一個任務,他們給我遞歸斐波那契算法,並要求返回時間。 我使用.SystemCurrentMilis完成了此操作,並在下面發布了我的代碼,但是測試人員說,這需要很長時間才能計算時間,因此我認為我必須給他們一些時間,因為執行功能和獲取時間太長。 希望對您有所幫助。 如何使函數timetocompute在即將發生的任何情況下都能更快地工作。

import java.math.BigInteger;
import java.math.BigDecimal;

public class Fibonacci {

public BigDecimal timeToComputeRecursiveFibonacci(int n) {
    long startTime = System.currentTimeMillis();
    recursive(n);
    long finishTime = System.currentTimeMillis();
    long tempTime = finishTime - startTime;
    BigDecimal usedTime = BigDecimal.valueOf(tempTime);
    return usedTime;
}


public BigInteger recursive(int n) { 
    if (n <= 1)
        return BigInteger.valueOf(n);
    return recursive(n - 1).add(recursive(n - 2));
}

}

我為遞歸函數創建了一些度量。 如果考慮一下,如果您可以測量recursive(n)那么recursive(n+1)速度將慢將近2倍,因為它需要計算n和n-1的函數。

  • nth-毫秒
  • 30-25
  • 31-43
  • 32-70
  • 33-113
  • 34-196
  • 35-301
  • 36-513
  • 37-926
  • 38-1266
  • 39-2210
  • 40-3652

因此,您可以從第30次開始估計第40個數字,即1.65 ^ 10 * 25,即1.65^m*time(n) 可以將其轉換為年份。 我會嘗試做這樣的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM