数列求值

数列求值

时间: 1ms        内存:128M

描述:

已知有如下递推公式,据此可以得出P序列中的所有数

求该数列的前n项。

输入:

一个整数n(n小于20)和两个小数x,y

输出:

以上P序列的前n项,每项一行

示例输入:

5 4.5 0.7

示例输出:

1.00
4.50
3.00
3.64
3.37

提示:

参考答案(内存最优[1092]):

#include<stdio.h>
#include<math.h>
int main()
{
float a[21],x,y,n,p,q;
int i,t;
scanf("%f%f%f",&n,&x,&y);
a[1]=1,a[2]=x;
if(n>=3)
{
printf("%.2f\n%.2f\n",a[1],a[2]);
for(i=3;i<=n;i++)
{
p=((2*y-1)/y)*a[i-1];
q=((y-1)/y)*a[i-2];
a[i]=p-q;
printf("%.2f\n",a[i]);
}
}
else
    for(t=1;t<=n;t++)
    printf("%.2f\n",a[t]);
return 0;
}

参考答案(时间最优[0]):

#include <iostream>
#include <iomanip>
using namespace std;
double p(int n, double x,double y);
int main( )
{
    int n, i;
    double x, y;
    cin>>n>>x>>y;
    cout<<setiosflags(ios::fixed)<<setprecision(2);
    for(i=1; i<=n; i++)
        cout<<p(i,x,y)<<endl;
    return 0;
}

double p(int n, double x,double y)
{
    double result;
    if(n==1)
        result=1;
    else if (n==2)
        result=x;
    else
        result= (2*y-1)/y*p(n-1,x,y) - (y-1)/y*p(n-2, x, y);
    return result;

}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注