/* File: restoric.c */
/* Time-stamp: "2001-03-27 15:42:15 calvanes" */
/* Scopo: esempio di funzione ricorsiva  */

/* Calcola il resto della divisione tra due interi con il divisore positivo

   Utilizza la seguente definizione ricorsiva:

     resto(x, y) = resto(x+y, y)    se x < 0
     resto(x, y) = x                se 0 <= x < y
     resto(x, y) = resto(x-y, y)    se x > y
*/

#include <stdio.h>


int resto (int, int);                            /* prototipo delle funzione */


int main(void)
{ 
  int num1, num2;

  printf( "Inserire due numeri interi:\n") ;
  do{
    printf("Il secondo valore deve essere positivo: ");
    scanf("%d%d", &num1, &num2);
  } while (num2 <= 0);

  printf("Il resto di %d/%d e` %d\n", num1, num2, resto(num1, num2));

  return 0;
}


int resto(int x, int y)
{
  if (x < 0)
    return resto(x+y, y);     /* caso ricorsivo */
  else if (x < y)
    return x;
  else
    return resto(x-y, y);     /* caso ricorsivo */
}