
\smallskip

Il y a plusieurs façons d'aborder cette question :

\begin{enumerate}
\item On peut s'inspirer de la formule de récurrence et faire une boucle itérative pour calculer les termes successifs $u_1$, $u_2$, ... , $u_n$:
\begin{python}
def u(n):
    v = 7 # on ne peut pas nommer le terme 'u' car cette lettre est déjà prise par la fonction
    for k in range(1,n+1):
        v = v + 3.2

    return v
\end{python}
\begin{console}
>>> u(8)
32.599999999999994
\end{console}
On s'aperçoit alors que le résultat n'est pas exact (car Python a une façon bien particulière de calculer et de représenter les nombres à virgules... Il fait très souvent des approximations !)

\newpage

\item On peut s'aider de la formule qui donne le terme général d'une suite arithmétique (car il s'agit bien d'une suite arithmétique de premier terme $u_0=7$ et de raison $r=3,2$ :
\[
u_n = u_0 + nr = 7 + 3,2n.
\]
Dans ce cas, la fonction est très simple:
\begin{python*}
def u(n):
    return 7 + 3.2*n
\end{python*}
\begin{console}
>>> u(8)
32.6
\end{console}

\item Il y a une autre possibilité (plus compliquée au prime abord):
\begin{python}
def u(n):
    if n == 0:
        return 7
    else:
        return u(n-1) + 3.2
\end{python}
\begin{console}
>>> u(8)
32.599999999999994
\end{console}
\begin{rem}
Cette dernière façon est la \textit{forme récursive} du programme: dans la fonction \texttt{u(n)}, on fait appel à la fonction elle-même, mais avec un argument différent.

Pour que cette forme fonctionne (sans jeu de mot), il faut penser à \og arrêter \fg{} la fonction à un moment donné: ici, c'est quand on atteint $n=0$, auquel cas on retourne le terme initial.
\end{rem}

\item En utilisant une boucle conditionnelle :
\begin{python}
def u(n):
    v, k = 7 , 0
    while k < n:
        v = v + 3.2
        k = k + 1
    return v
\end{python}
\begin{console}
>>> u(8)
32.599999999999994
\end{console}
\end{enumerate}
