Tassos

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

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