# TD-19 (info liam) ## Exercice 1 ### 1) Soit $i_k$ la valeur de i apres k itération.\ $$ \begin{cases} i_0 = 1 \\ i_{k+1} = i_k + 1 \end{cases} $$ donc i varie de maniere croissante.\ Comme n ne change pas dans la focntion on aura focément a un moment i < n + 1.\ Donc la fonction se termine. ### 2) Par récurrence montrons que $$ somme(n)= \sum_{i=1}^{n} i^2 $$ - Soit $somme_k$ la valeur de somme apres k itération. - Soit $i_k$ la valeur de i apres k itération. __Initialisation__\ Dans l'algo somme_carre(0) = 0\ On sais que n = 0.\ On sais que a l'initialisation des variable on a: - $i_0 = 1$ - $somme_0 = 0$ On n'entre pas dans la boucle, car $i=1$ et $n=0$ donc $1 < 1$ faux. On retourne donc $somme_0 = 0$ __Hérédité__\ On suppose la propriété vraie au rang n. Montrons alors qu'elle est vraie au rang n+1. But: somme_carre(n+1) = $\sum_{i=1}^{n+1} i^2$ Or $somme_{k} = \sum_{i=1}^{k} i^2$\ Donc $somme_{k + 1} = \sum_{u=1}^{k} u^2 + i_{k+1}^2 = \sum_{u=1}^{k + 1} u^2$ On a n itération. Donc somme = $somme_n$ = $somme_{n+1}$ ### 3) Compléxité $O(n)$ ```python def somme_carre(n): if i <= 0: # initialisation return 0 return somme_carre(n - 1) + n ** 2 #hérédité ``` $$ a = b \times q_{n+1} + r_{n+1} \\ q_k = k - 1 \\ q_{n + 1} = n \\ r_k = r_0 - b \times k \\ r_0 = a \\ r_{n+1} = r_0 - b \times n = a - b \times n = \\ a = b * n + a - b * n = a $$ $r0 - k * b >= b$