概率有关问题(编程C) 算法填空

概率问题(编程C) 算法填空
某个袋子中有红球m个,白球n个。先从中取出x个球,那么红球数目多于白球的概率是多少?
/* m:袋中红球数目
n:袋中白球数目
x:需要取出的数目
y:红球至少出现的次数*/
填程:
double pro(int m,int n,int x,int y)
{
if(y>x) return 0;
if(y==0) return 1;
if(y>m) return 0;
if(x-n>y) return 1;
double p1=_______(1)___;
double p2=_______(2)___;
return (double)m/(m+n)*p1+ (double)n/(m+n)*p2;
}

------解决方案--------------------
好吧.我给详细解释一下吧.
return (double)m/(m+n)*p1+ (double)n/(m+n)*p2; 这个是最后的概率.
注意m/(m+n) 和 n/(m+n). 这两个即是我第一次摸的时候 摸到红球的概率 和 摸到白球的概率.
第一次摸只有两种可能,即摸到白球和摸到红球,如果摸到红球,那么我要实现一共从m个红球n个白球中摸x个至少有y个红球,只需要从剩下的m-1个红球n个白球中摸x-1个,至少有y-1个红球. 其概率是p1=pro(m-1,n,x-1,y-1),那么m/(m+n)*p1就是第一次摸到红球时满足要求的概率,同理可求出第一次摸到白球的概率是n/(m+n)*p2.相加即是最终概率.