请编写递归函数,求排列数。
函数原型
double Arg(int x, int y);
说明:x 和 y 是非负整数,且 x ≥ y,函数值为排列数 Axy。
要求:不要用循环语句,不调用阶乘函数,该函数直接调用自己计算出结果。
裁判程序
#include <stdio.h>
double Arg(int x, int y);
int main()
{
int m, n;
scanf("%d%d", &m, &n);
printf("%.10g\n", Arg(m, n));
return 0;
}
/* 你提交的代码将被嵌在这里 */
测试数据
输入样例 | 输出样例 |
0 0 | 1 |
5 0 | 1 |
34 17 | 8.300343946e+023 |
160 160 | 4.714723636e+284 |
1000 100 | 5.958926632e+297 |
我的答案
double Arg(int x, int y)
{
if(y==1)
{
return x;
}
if(y==0)
{
return 1;
}
return Arg(x,y-1)*Arg(x-y+1,1);
}
答案二
double Arg(int x, int y)
{
if(y==0)
{
return 1;
}
return Arg(x-1,y-1)*x;
}