c++编程:用递归法求下列级数前n项和s。

s=x-x^2+x^3-x^4+x^5···+(-1)^(n-1)x^n
我编的程序是:
#include<iostream.h>
#include<math.h>
float px(float x,int n)
{int t=1,k=-1,y,i=-1;
if(n=0)
y=-1;
else if(n=1)
y=x;
else
{t*=x;
k=k*i;
y=k*t+px(x,n-1);}
return(y);
}
void main()
{float x,s;int n;
cout<<"从键盘输入x、n的值:";
cin>>x>>n;
s=px(x,n);
cout<<"s="<<s<<endl;
}
有四个警告。算出来的结果绝对是错的,请高手帮忙看下,好的会追加悬赏分。

第1个回答  2009-05-13
float px(float x, int n, float a)
{
if (n==0)
return 0;
if (n==1)
return a;

return a+px(x, n-1, -a*x);
}

我跟踪了一下,好像是对的。
使用方法:
s=px(x,n,x);

你的公式是
s=x-x^2+x^3-x^4+x^5···+(-1)^(n-1)x^n
不是
s=-1+x-x^2+x^3-x^4+x^5···+(-1)^(n-1)x^n
所以我认为 n=0 时 结果=0 不等于 -1

你写 if (n=0) 不对。
if (n==0) 才对。还有y应定义为float.

你的逻辑没仔细看,不好意思。
你对我的代码不懂就问别人。我上线少。
给不给分无所谓。
第2个回答  推荐于2016-01-27
测试通过了
#include <iostream>
using namespace std;

void main()
{
double x;
int n;

double fun(double x,int n);
cout<<"请输入x和n"<<endl;
cin>>x>>n;
cout<<fun(x,n)<<endl;

}

double fun(double x,int n)
{
if(n==1)
return x;
else
{
//下面三条语句用来求x的n次方
double s=1;
for(int i=1;i<=n;i++)
s=s*x;

if(n%2==0)
return -s+fun(x,n-1);
else
return s+fun(x,n-1);

}
}本回答被提问者采纳
第3个回答  2019-02-12
测试通过了
#include
<iostream>
using
namespace
std;
void
main()
{
double
x;
int
n;
double
fun(double
x,int
n);
cout<<"请输入x和n"<<endl;
cin>>x>>n;
cout<<fun(x,n)<<endl;
}
double
fun(double
x,int
n)
{
if(n==1)
return
x;
else
{
//下面三条语句用来求x的n次方
double
s=1;
for(int
i=1;i<=n;i++)
s=s*x;
if(n%2==0)
return
-s+fun(x,n-1);
else
return
s+fun(x,n-1);
}
}
第4个回答  2009-05-13
将t和y变量声明为float类型,或者将x强制转换成int型就行了,看你要哪种了,不过这种警告是没关系的
第5个回答  2009-05-13
你的太复杂
n要汾奇数还是偶数
你的简单递归套路还没有清楚
好好学习吧

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网