web-dev-qa-db-fra.com

Facile: Résoudre T (n) = T (n-1) + n par méthode d'itération

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.

11
blackvitriol
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

28
Fyre

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

8
Haile

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)
1
richard me

En pseudo-code utilisant l'itération:

function T(n) {
    int result = 0;

    for (i in 1 ... n) {
       result = result + i;
    }

    return result;
}    
1
Jesse the Game