例1
语句 执行步数 频率 总步数
int factorial(int n) 0 0 Theta(0)
{ 0 0 Theta(0)
if (n <= 1) return 1; 1 1 Theta(1)
else return n * factorial(n - 1); 1 + tfactorial(n-1) 1 1 + tfactorial(n-1)
} 0 0 Theta(0)
factorial是计算n!的递归函数,所以
当n=1是设执行factorial时间是c, 我们可以得到:
tfactorial(n) = 1 + tfactorial(n-1) = 2 + tfactorial(n-2) = 3 + tfactorial(n-3)
...... = n - 1 + tfactorial(1)= n - 1 + c = Theta(n)
例2
_______________________________________________________________________________________
语句 执行步数 频率 总步数
_______________________________________________________________________________________
bool minmax(...) 0 0 Theta(0)
{ 0 0 Theta(0)
if (n < 1) return false; 1 1 Theta(1)
indexOfMin = indexOfMax = 0; 1 1 Theta(1)
for (int i = 1; i < n; i++) 1 Theta(n) Theta(n)
if (a[indexOfMin] > a[i]) indexOfMin = i; 1 Theta(n) Theta(n)
else if (a[indexOfMax] ...) indexOfMax = i; 1 Omega(0), O(n) Omega(0), O(n)
return true; 1 1 Theta(1)
} 0 0 Theta(0)
_______________________________________________________________________________________
因此, tminmax(n) = Theta(n), n >= 1.