Quelqu'un pourrait m'aider avec ça ?
Utilisez la méthode d'itération pour le résoudre. T(n) = T(n-1) + n
Une explication des étapes serait grandement appréciée.
T(n) = T(n-1) + n
T(n-1) =T(n-2) + n-1
T(n-2) = T(n-3) + n-2
et ainsi de suitevous pouvez substituer la valeur de T(n-1) et T(n-2) à T(n) pour avoir une idée générale du motif .
T(n) = T(n-2) + n-1 + n
T(n) = T(n-3) + n-2 + n-1 + n
T(n) = T(n-k) +kn - k(k-1)/2
Pour le cas de base:
n - k =1 so we can get T(1)
k = n - 1 remplacer par ci-dessus
T(n) = T(1) + (n-1)n - (n-1)(n-2)/2
Ce que vous pouvez voir est d'ordre n ^ 2
Développez-le!
T(n) = T(n-1) + n = T(n-2) + (n-1) + n = T(n-3) + (n-2) + (n-1) + n
et ainsi de suite jusqu'à
T(n) = 1 + 2 + ... + n = n(n+1)/2 [= O(n^2)]
à condition que T(1) = 1
Une autre solution plus facile
T(n) = T(n-1) + n
= T(n-2) + n-1 + n
= T(n-3) + n-2 + n-1 + n
// we can now generalize to k
= T(n-k) + n-k-1 + n-k-2 + ... + n-1 + n
// since n-k = 1 so k = n-1 and T(1) = 1
= 1 + 2 + ... + n
= n(n-1)/2
= n^2/2 - n/2
// we take the dominating term which is n^2*1/2 therefor 1/2 = big O
= big O(n^2)
En pseudo-code utilisant l'itération:
function T(n) {
int result = 0;
for (i in 1 ... n) {
result = result + i;
}
return result;
}