请编写递归函数,求下面的简单幂级数。
P(x,n)=1+x+x2+x3+...+xn
函数原型
double P(double x, int n);
说明:x 为实数,n 为非负整数,函数值为多项式的值。
规定:当 n=0 时,函数值为 1。
裁判程序
#include <stdio.h> double P(double x, int n); int main() { double x; int n; scanf("%lg%d", &x, &n); printf("%.15g\n", P(x, n)); return 0; } /* 你提交的代码将被嵌在这里 */
输入样例1
0.5 12
输出样例1
1.999755859375
输入样例2
-0.5 12
输出样例2
0.666748046875
要求:不使用循环语句,用递归方法完成函数的设计。
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
这题属于C语言的入门题,刚开始学递归可能有点懵,但只要找出他们的共同点,递归就很容易了。
这题我们可以看到,他首先是从x的零次方开始的,然后一直加到x的n次方。
思路推导:
当n==0时,P=1;
当n==1时,P=x+1;
当n==2时,P=x*x+x+1=x*(x+1)+1;
从这里可以看出,他们的前后关系,也就是递推关系:从n==2开始,后者等于前者的x倍再加上1,即 后一个P=x* 前一个P +1;
下面就是题目代码。
若有写到这道题,来搜的同学可以拿去借鉴哦
double P(double x, int n)
{
if(x==0)
return 1;
else
if(n==0)
return 1;
else if(n==1)
return x+1;
else
return P(x,n-1)*x+1;
}