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));
    }

  • 相关阅读:
    BigTale
    GFS Google File System(中文翻译)
    MapReduce
    Google MapReduce/GFS/BigTable三大技术的论文中译版
    Linux常用命令大全
    linux常用命令
    Oracle复杂查询
    jquery on事件jquery on实现绑定多个事件
    Java 多线程(六) synchronized关键字详解
    什么才算是真正的编程能力?
  • 原文地址:https://www.cnblogs.com/WALLACE-S-BOOK/p/9732314.html
Copyright © 2011-2022 走看看