{ Visit: http://g-lts.info/ for more code! } #include unsigned long int odd_d_f(unsigned long int a, int b); /* Αναδρομική συνάρτηση που: - Παίρνει έναν αριθμό που ψάχνουμε για να βρούμε το παραγοντικό του - Παίρνει τον μειωμένο κατά 2 αριθμό αρχικό αριθμό. - Επιστρέφει τον παραγοντικό του αριθμού που λαμβάνει. Δουλεύει σωστά για ΠΕΡΙΤΤΌ αριθμό ΜΌΝΟ. */ unsigned long int even_d_f(unsigned long int a, int b); /* Αναδρομική συνάρτηση που: - Παίρνει έναν αριθμό που ψάχνουμε για να βρούμε το παραγοντικό του - Παίρνει τον μειωμένο κατά 2 αριθμό αρχικό αριθμό. - Επιστρέφει τον παραγοντικό του αριθμού που λαμβάνει. Δουλεύει σωστά για ΆΡΤΙΟ αριθμό ΜΌΝΟ. */ int main (void) { unsigned long int a; printf("Δώσε μου έναν ακέραιο : "); scanf("%ld", &a); if ( a % 2 == 1 ) /* Περιττός */ printf("n!! = %lu\n",odd_d_f(a,a-2) ); /* Μειώνουμε ΕΞΑΡΧΉΣ τον ΑΡΧΙΚΟ αριθμό μας κατά 2 ( όπως λέει ο τύπος ) */ else /* Άρτιος */ printf("n!! = %lu\n",even_d_f(a,a-2) ); /* Μειώνουμε ΕΞΑΡΧΉΣ τον ΑΡΧΙΚΟ αριθμό μας κατά 2 ( όπως λέει ο τύπος ) */ return 0; } /**************** Περιττή αναδρομική συνάρτηση. ****************/ unsigned long int odd_d_f(unsigned long int a, int b) { if (b==1) /* Όπως λέει ο τύπος, στους ΠΕΡΙΤΤΟΎΣ μέχρι το 1! */ return a; else odd_d_f(a*b,b-2); /* Μειώνουμε ξανά τον αριθμό μας κατά 2 ( όπως λέει ο τύπος ) */ } /***************** Τέλος περιττής αναδρομικής συνάρτησης *****************/ /**************** Άρτια αναδρομική συνάρτηση. ****************/ unsigned long int even_d_f(unsigned long int a, int b) { if (b==0) /* Όπως λέει ο τύπος, στους ΆΡΤΙΟΥΣ μέχρι ΚΑΙ τον 2! για αυτό και το τέλος τώρα γίνεται στο 0 και όχι στο 2.. ;) */ return a; else even_d_f(a*b,b-2); /* Μειώνουμε ξανά τον αριθμό μας κατά 2 ( όπως λέει ο τύπος ) */ } /***************** Τέλος άρτιας αναδρομικής συνάρτησης *****************/ { Visit: http://g-lts.info/ for more code! }