一般Fibonacci演算法的優化

2022-04-03 10:29:21 字數 1132 閱讀 1536

一般的fibonacci演算法:

int fibonacci(int

number)

該演算法的時間複雜度達到了驚人的指數級別,效率慢的不行,下面提供兩種不同的改進方式,時間複雜度分別為o(n)和o(logn)。

方法一:o(n)

int fibonacci(int

number)

;

int result = 0

;

for (int index = 2; index <= number; ++index)

return

result;

}

將原本的自頂向下計算的方式,改為自底向上,消除原本過多的冗餘計算,來降低時間複雜度。

方法二:o(logn)

資料結構:

struct

matrix2by2

public

:

intm_00;

intm_01;

intm_10;

intm_11;

};matrix2by2 matrixmultiply(

const matrix2by2& matrix1, const matrix2by2&matrix2)

遞迴方式:

matrix2by2 matrixpower(matrix2by2 matrix, int

exponent)

else

}int fibonacci(int

number)

非遞迴方式:

int fibonacci(int

number)

matrix =matrixmultiply(matrix, matrix);

exponent = exponent >> 1

; }

return

result.m_00;

}

利用了 =n-1的性質,實際上就是2階矩陣(a11 = 1, a12 = 1, a21 = 1, a22 = 0)的n-1次冪,fibonacci(n)為該矩陣n-1次冪的a11。

JVM效能調優(一般)

鏈結 監控cpu 監控記憶體 發現發生full gc 可能存在大物件,案例 用乙個物件統計老師發表的 如果乙個老師發表很多,可能造成這個物件很大,大物件直接進入老年代,如果堆記憶體很大,full gc時間就很長。部署多個web容器,減少單個web容器的堆記憶體。場景 簡單抓取系統,抓取 上的一些資料...

SQL 調優一般思路

一般來說,調優的第一手資料中,如何根據報告來判斷是哪些sql消耗了最多的系統資源?哪些sql是最需要調整的呢?這裡給出了乙個大致的優化思路。一般來說,需要關注下面四種top sql 我們知道,乙個語句的響應時間有個很著名的公式 響應時間 服務時間 等待時間 其中服務時間就是cpu為執行該語句花費的時...

TensorFlow演算法一般流程

匯入 生成要本資料集 轉換和歸一化資料 data tf.nn.batch norm with global normalization 劃分訓練集 測試集 驗證集 設定超引數,一次性初始化 初始化和佔位 定義模型結構 y pred tf.add tf.mul x input,weight matri...