/* 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 */ }