[英]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的函數。
因此,您可以從第30次開始估計第40個數字,即1.65 ^ 10 * 25,即1.65^m*time(n)
。 可以將其轉換為年份。 我會嘗試做這樣的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.