递推递归练习--F(计算组合数)

来源:互联网 发布:速拓软件价格 编辑:程序博客网 时间:2024/05/16 14:19

题目简述:

计算公式如下:
若:m=0,C(n,m)=1
否则, 若 n=1,C(n,m)=1
             否则,若m=n,C(n,m)=1
                         否则 
C(n,m) = C(n-1,m-1) + C(n-1,m).

解题思路:

1、由题意知是一个典型的递归问题。涉及到三个函数。

2、因题意中给出三个函数的形式,所以可以直接套用。

源代码:

#include <bits/stdc++.h>using namespace std;int C(int n,int m){    if (m==0||n==1||m==n)        return 1;    if (m==1||m==n-1)        return n;    else        return C(n-1,m-1)+C(n-1,m);}int main(){    int n,i,a,b;    while (cin>>n)    {        for (i=0;i<n;i++)        {            cin>>a>>b;            cout<<C(a,b)<<endl;        }    }    return 0;}
解题感想:没有什么感想……感觉只是练手的递归问题,题目中很清楚的告诉了公式,所以感觉很好做。但是真正的递归还是要自己找,依旧任重而道远啊。

0 0