Tassos

Αναδρομική συνάρτηση υπολογισμού διπλού παραγοντικού-V1.

May 4th, 2014
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.57 KB | None | 0 0
  1. {                                  Visit:   http://g-lts.info/  for more code!                            }
  2.  
  3. #include <stdio.h>
  4.  
  5. unsigned long int odd_d_f(unsigned long int a, int b);
  6. /* Αναδρομική συνάρτηση που:
  7.     - Παίρνει έναν αριθμό που ψάχνουμε για να βρούμε το παραγοντικό του
  8.     - Παίρνει τον μειωμένο κατά 2 αριθμό αρχικό αριθμό.
  9.     - Επιστρέφει τον παραγοντικό του αριθμού που λαμβάνει.
  10. Δουλεύει σωστά για ΠΕΡΙΤΤΌ αριθμό ΜΌΝΟ. */
  11.  
  12. unsigned long int even_d_f(unsigned long int a, int b);
  13. /* Αναδρομική συνάρτηση που:
  14.     - Παίρνει έναν αριθμό που ψάχνουμε για να βρούμε το παραγοντικό του
  15.     - Παίρνει τον μειωμένο κατά 2 αριθμό αρχικό αριθμό.
  16.     - Επιστρέφει τον παραγοντικό του αριθμού που λαμβάνει.
  17. Δουλεύει σωστά για ΆΡΤΙΟ αριθμό ΜΌΝΟ. */
  18.  
  19.  
  20. int main (void)
  21.  
  22. {
  23.  
  24. unsigned long int a;
  25. printf("Δώσε μου έναν ακέραιο : ");
  26. scanf("%ld", &a);
  27.  
  28.  
  29. if ( a % 2 == 1 ) /* Περιττός */
  30.     printf("n!! = %lu\n",odd_d_f(a,a) );
  31. else /* Άρτιος */
  32.     printf("n!! = %lu\n",even_d_f(a,a) );
  33.  
  34. return 0;
  35. }
  36.  
  37.  
  38. /**************** Περιττή αναδρομική συνάρτηση. ****************/
  39. unsigned long int odd_d_f(unsigned long int a, int b)
  40.  
  41. {
  42. if (b==1) /* Όπως λέει ο τύπος, στους ΠΕΡΙΤΤΟΎΣ μέχρι το 1! */
  43.     return a;
  44. else
  45.     {
  46.     b = b-2; /* Μειώνουμε τον ΑΡΧΙΚΟ αριθμό μας κατά 2 ( όπως λέει ο τύπος ) */
  47.     odd_d_f(a*b,b);
  48.     }
  49. }
  50.  
  51. /***************** Τέλος περιττής αναδρομικής συνάρτησης *****************/
  52.  
  53.  
  54. /**************** Άρτια αναδρομική συνάρτηση. ****************/
  55.  
  56. unsigned long int even_d_f(unsigned long int a, int b)
  57.  
  58. {
  59.  
  60. if (b==2) /* Όπως λέει ο τύπος, στους ΆΡΤΙΟΥΣ μέχρι το 2! */
  61.     return a;
  62. else
  63.     {
  64.     b = b-2; /* Μειώνουμε τον ΑΡΧΙΚΟ αριθμό μας κατά 2 ( όπως λέει ο τύπος ) */
  65.     even_d_f(a*b,b);
  66.     }
  67. }
  68.  
  69.  
  70. /***************** Τέλος άρτιας αναδρομικής συνάρτησης *****************/
  71.  
  72.  
  73.  
  74. {                                  Visit:   http://g-lts.info/  for more code!                            }
Advertisement
Add Comment
Please, Sign In to add comment