实验10-8 递归计算P函数(15 分)

实验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
10 1.7

输出样例:

1
3.05
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;
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×