实验10-8 递归计算P函数(15 分)
$$
ack(m,n)=\begin{cases}
1 & (n=0) \\\\
x & (n=1)\\\\
\frac{(2n-1)P(n-1,x)-(n-1)P(n-2,x)}{n} & (n>1)
\end{cases}
$$
函数接口定义:
1
| double P( int n, double x );
|
其中n
是用户传入的非负整数,x
是双精度浮点数。函数P
返回P(n,x)函数的相应值。题目保证输入输出都在双精度范围内。
裁判测试程序样例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include <stdio.h>
double P( int n, double x );
int main() { int n; double x;
scanf("%d %lf", &n, &x); printf("%.2f\n", P(n,x));
return 0; }
|
输入样例:
输出样例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include <stdio.h>
double P( int n, double x );
int main() { int n; double x;
scanf("%d %lf", &n, &x); printf("%.2f\n", P(n,x));
return 0; }
double P( int n, double x ) { double result; if(n == 0) result = 1; else if(n == 1) result = x; else result = ((2 * n - 1) * P(n-1,x)-(n - 1) * P(n-2,x)) / n; return result; }
|