zoukankan      html  css  js  c++  java
  • 计算二项式系数使用循环和递归实现

    #include <stdio.h>
    double recurBinom(int, int);
    double iterBinom(int, int);
    double recurFact(int n);
    
    int main(){
       int n,m;
       printf("n:(>=0): ");
       scanf("%d", &n);
       while (n < 0) 
       { /*error loop */
         printf("n:(>=0): ");
         scanf("%d", &n);
       }
       printf("m:(>=0): ");
       scanf("%d", &m);
       while (m < 0) 
       { /*error loop */
         printf("m:(>=0): ");
         scanf("%d", &m);
       }
      printf("n: %d m: %d Recursive Binomial coefficient is %f.
    ", n, m, recurBinom(n,m));
      printf("n: %d m: %d Iterative Binomial coefficient is %f.
    ", n, m, iterBinom(n,m));
    
    }
    
    double iterBinom(int n, int m)
    {/* defined as n!/(m! - (n-m)!)*/
       int i;
       double nFact, mFact, nMinusMFact;
       if (n == m) return 1;
       if ((n==0) || (n == 1)) nFact = 1;
        else  {
    	   nFact = 1;
           for (i = n; i > 1; i--)
               nFact *= i;
       }
       if  ((m==0) || (m == 1))  mFact = 1;
       else {
    	   mFact = 1;
           for (i = m; i > 1; i--)
               mFact *= i;
       }
     if ( ((n-m) == 0) || ((n-m) == 1))  nMinusMFact = 1;
     else  {
    	nMinusMFact = 1;
    	for (i = n-m; i > 1; i--)
    		nMinusMFact *= i;
     }
     return nFact/(mFact*nMinusMFact);
    }
    
    double recurFact(int n)
    { /*recursive version */
      if ((n==0) || (n==1))  return 1.0;
      return n*recurFact(n-1);
    }
    
    
    double recurBinom(int n, int m)
    { /*recursive version */
      return recurFact(n)/(recurFact(m)*recurFact(n-m));
    }

  • 相关阅读:
    nginx的基础使用
    npm的一些细节
    webpack打包多页面
    右键打开命令窗口
    本地建立服务器
    would you please...could you please...两句区别是什么?
    Mockito/PowerMockito Straige Issues
    pip install pyinstaller
    20171211
    Chrome 扩展
  • 原文地址:https://www.cnblogs.com/WALLACE-S-BOOK/p/9732314.html
Copyright © 2011-2022 走看看