65,189
社区成员




//这是求 阶称的程序
#include <iostream>
using namespace std;
int fdigui(int n);
int digui(int n, int r);
int main()
{
int n,r,c1,c2;
while(1){
cout <<"请输入n的值:" <<endl;
cin>>n;
cout <<"请输入r的值:" <<endl;
cin>>r;
if(n==0 && r==0){
break; //当n=0,r=0时程序结束
}
if(n>=1 && n>=r)
{ //当n>=1并且n>=r时,计算
if(r==0) //mark
{
return 1;
}else if(r==1) //mark
{
return n;
}else
{
c1 = fdigui(n)/(fdigui(r)*fdigui(n-r));
c2 = digui(n,r);
cout <<"非递归算出的结果:"<<c1 <<endl;
cout <<"递归算出的结果:" <<c2 <<endl;
}
}
else
{
cout <<"Input Invalid !" <<endl;
}
}
return 0;
}
int fdigui(int n)
{
int result = 1;
for(int i=2;i <=n;++i)
result = result*i;
return result;
}
int digui(int n, int r)
{
if (r==0) //mark
{
return 1;
}
else
{
return digui(n,r-1)*(n-r+1)/r;
}
}