/* tp0.c
   Corrigé de l'énoncé de TP numéro 0 (AP2)
   auteur : Jean Lieber
   date : 10 janvier 2018
*/

#include <stdio.h>
#include <stdlib.h>

double u(unsigned int n)
{
  double unm1 ;
  if (n == 0)
    {
      return 1.5 ;
    }
  unm1 = u(n-1) ;
  return unm1 / 2. + 1. / unm1 ;
}

void test_u_param (unsigned int n)
{
  printf("u%u = %f\n",
	 n, u(n)) ;
}

void test_u()
{
  test_u_param(0) ;
  test_u_param(1) ;
  test_u_param(2) ;
  test_u_param(10) ;
  test_u_param(20) ;
  test_u_param(100) ;
}

int main()
{
  test_u() ;
  return EXIT_SUCCESS ;
}

/*
L'exécution du programme donne :
u0 = 1.500000
u1 = 1.416667
u2 = 1.414216
u10 = 1.414214
u20 = 1.414214
u100 = 1.414214

On constate que la suite semble converger vers une
valeur proche de 1,414 et donc, proche de la racine
carrée de 2.
*/
