{ Visit: http://g-lts.info/ for more code! }
#include <stdio.h>
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! }
Comments