Table of Binomial Coefficients

Problem: Binomial coefficients are used in the study of binomial distributions and reliability of multicomponent redundant systems.  It is given by

                                     m            m!
                  B(m,x)  =   (   )  = ------------- ,       m >= x
                                       x        x! (m-x)!           

A table of binomial coefficients is required to determine the binomial coefficient for any set of m and x.

Problem Analysis: The binomial coefficient can be recursively calculated as follows:
   
B(m,o)  = 1
    
                                                 m-x+1
            B(m,x)  =   B(m,x-1) [              ],     x = 1,2,3,...,m
                                                   x

Further,

            B(o,o)  = 1


That is, the binomial coefficient is one when either x is zero or m is zero.  The program in Fig.6.12 prints the table of binomial coefficients for m = 10.  The program employs one do loop and one while loop.

Program                                                             
   #define     MAX     10                                         
   main()                                                         
   {                                                               
       int  m, x, binom;                                          
       printf(" m x");                                            
       for (m = 0; m <= 10 ; ++m)                                 
           printf("%4d", m);                                      
       printf("\n-------------------------------------------\n");                                 
       m = 0;                                                     
       do                                                          
       {                                                          
           printf("%2d  ", m);                                      
           x = 0; binom = 1;                                             
           while (x <= m)                                         
           {                                                      
               if(m == 0 || x == 0)                               
                  printf("%4d", binom);                           
               else                                               
                  {                                               
                     binom = binom * (m - x + 1)/x;               
                     printf("%4d", binom);                         
                  }
               x = x + 1;                                         
           }                                                      
           printf("\n");                                          
           m = m + 1;                                             
       }                                                          
       while (m <= MAX);                                          
       printf("---------------------------------------------\n");                                    
   }
                                                              
Output     m x   0   1   2   3   4   5   6   7   8   9  10           
         ---------------------------------------------------           
    0     1                                                    
    1     1   1                                               
    2     1   2   1                                           
    3     1   3   3   1                                       
    4     1   4   6   4   1                                   
    5     1   5  10  10   5   1                               
    6     1   6  15  20  15   6   1                           
    7     1   7  21  35  35  21   7   1                       
    8     1   8  28  56  70  56  28   8   1                   
    9     1   9  36  84 126 126  84  36   9   1               
   10     1  10  45 120 210 252 210 120  45  10   1 
        ---------------------------------------------------                                                      

No comments:

Post a Comment

Copyright © EduRAR @ www.edurar.blogspot.in