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.
你的逻辑没仔细看,不好意思。
你对我的代码不懂就问别人。我上线少。
给不给分无所谓。
测试通过了
#include
using namespace std;
void main()
{
double x;
int n;
double fun(double x,int n);
cout<<"请输入x和n"<
cout<
}
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);
}
}
测试通过了
#include
using
namespace
std;
void
main()
{
double
x;
int
n;
double
fun(double
x,int
n);
cout<<"请输入x和n"<
cout<
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);
}
}
将t和y变量声明为float类型,或者将x强制转换成int型就行了,看你要哪种了,不过这种警告是没关系的
你的太复杂
n要汾奇数还是偶数
你的简单递归套路还没有清楚
好好学习吧