{ 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) );
else /* Άρτιος */
printf("n!! = %lu\n",even_d_f(a,a) );
return 0;
}
/**************** Περιττή αναδρομική συνάρτηση. ****************/
unsigned long int odd_d_f(unsigned long int a, int b)
{
if (b==1) /* Όπως λέει ο τύπος, στους ΠΕΡΙΤΤΟΎΣ μέχρι το 1! */
return a;
else
{
b = b-2; /* Μειώνουμε τον ΑΡΧΙΚΟ αριθμό μας κατά 2 ( όπως λέει ο τύπος ) */
odd_d_f(a*b,b);
}
}
/***************** Τέλος περιττής αναδρομικής συνάρτησης *****************/
/**************** Άρτια αναδρομική συνάρτηση. ****************/
unsigned long int even_d_f(unsigned long int a, int b)
{
if (b==2) /* Όπως λέει ο τύπος, στους ΆΡΤΙΟΥΣ μέχρι το 2! */
return a;
else
{
b = b-2; /* Μειώνουμε τον ΑΡΧΙΚΟ αριθμό μας κατά 2 ( όπως λέει ο τύπος ) */
even_d_f(a*b,b);
}
}
/***************** Τέλος άρτιας αναδρομικής συνάρτησης *****************/
{ Visit: http://g-lts.info/ for more code! }
Comments