public int foo (int x , int k) {
if (x <= k)
return 1;
else
return foo (x/k , k) + 1;
}
從我的理解,這應該等於條件的運行時間+較大的if/else語句的運行時間。大哦表示法下面語句的運行時間是多少?
但是,我無法確定語句「return foo(x/k,k)+ 1」的正確運行時間。這會保持不變嗎? x和k的增加似乎對運行時間沒有影響,因爲它們之間的比率對結果很重要。
任何清晰度將不勝感激。謝謝!
從邏輯上推導出結果似乎相當棘手,但您可以通過測量各種輸入的運行時間並尋找趨勢來找到答案。幸運的是,你甚至不需要時間測量功能來做到這一點,因爲函數返回的數字與函數體執行的次數相同。防爆。如果函數返回6,則返回時間是其返回值的兩倍3. – Kevin 2015-02-11 14:10:06