数列求值
时间: 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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。