简单幂级数(递归版)

请编写递归函数,求下面的简单幂级数。

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;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值