题目描述
题目分析
当n>1时,通过给出的式子看到会继续回到P(x)这个函数,看到这里我们就要考虑递归的方式来求解。(如果对递归不熟悉的可以看我主页那篇有关递归初阶讲解的文章)。
代码实现
#include<stdio.h>
double p(double x, int n);//P(x)函数
int main()
{
double x;
int n;
scanf("%lf %d", &x, &n);
double q = p(x, n);
printf("%.2f\n", q);//打印输出的实际结果
return 0;
}
double p(double x, int n)
{
if (n == 0)
return 1.00;//n=0时返回1结束函数
else if (n == 1)
return x;//n=1时返回x结束函数
else if (n > 1)
{
double m1 = (double)(2 * n - 1) / n * x * p(x, n - 1);//调用P函数实现递归
double m2= (double)(n - 1) / n * p(x, n - 2);//调用P函数实现递
double m = m1 - m2;
return m;
}
}