import java.util.Scanner;

class PGSomme {

/**
  Somme récursive
  @param[in] n - un entier
  @return Somme des entiers de 1 à n
*/

public static int somme(int n)
{
  return (n <= 0 ? 0 : n + somme(n - 1));
}

/**
  Trace de la Somme récursive
  @param[in] n - un entier
  @return Somme des entiers de 1 à n
*/

public static int sommetr(int n)
{
  int rs = 0;
  System.out.println("--> sommetr(" + n + ")");
  if (n > 0)
  {
    rs = n + sommetr(n - 1);
  }
  System.out.println("<-- sommetr(" + n + ")");
  return rs;
}

/**
  Somme récursive terminale
  @param[in] n - un entier
  @param[in] a - cumul
  @return Somme des entiers de 1 à n
*/

public static int sommeRt(int n, int a)
{
  return (n <= 0 ? a : sommeRt(n - 1,n + a));
}

public static void main(String[] args)
{
  Scanner input = new Scanner(System.in);
  int n;
  System.out.print("Somme de 1 a ? ");
  n = input.nextInt();
  System.out.println("==> somme(n) vaut " + somme(n));
  System.out.println("==> sommetr(n) vaut " + sommetr(n));
  System.out.println("==> sommeRt(n) vaut " + sommeRt(n,0));
}

}
