首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教如何计算(x+1)(x+2).(x+n)的值

2012-02-11 
请问怎么计算(x+1)(x+2)...(x+n)的值!请问怎么计算(x+1)(x+2)...(x+n)的值![解决办法]double f(double x,i

请问怎么计算(x+1)(x+2)...(x+n)的值!
请问怎么计算(x+1)(x+2)...(x+n)的值!

[解决办法]

double f(double x,int n)
{
int i = 1;
double res = 1;
while(i > n)
{
res *= x+i;
}

return res;
}
[解决办法]
没记错的话,好像系数为斯特林数,可以参考一些数学手册或《计算机程序设计艺术》
[解决办法]
写了个程序,能实现功能。但复杂度是n2,不太好。楼主先看吧

//计算 (x+1)(x+2)......(x+n) 的多项式系数
///////////////////////////////////////////////

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

int main()
{
//input n
int n = 0;

do
{
cout < < "pls input n greater than 1: \t ";
while(!(cin > > n))
{
cout < < "illegal input! pls input again: \t ";
}//while
}
while(n < 1);


std::vector <int> rlt;//rlt;
vector <int> ::reverse_iteratorrpos;

//x+1
rlt.push_back(1);
rlt.push_back(1);

//计算系数
if(n > 1)
{
for(int i=2; i <n+1; ++i)
{
for(rpos = rlt.rbegin(); rpos != rlt.rend()-1; ++rpos)
{
*rpos *= i;
*rpos += *(rpos+1);
}
*rpos *= i;

rlt.push_back(1);//x exp n 系数
}//for
}//if

//output rlt
for(rpos = rlt.rbegin(); rpos != rlt.rend(); ++rpos)
{
cout < < *rpos;
cout < < " X exp " < < fabs( rpos-rlt.rend() )-1;
if(rpos != rlt.rend() - 1)
{
cout < < " + ";
}//if
else
{
cout < < endl;
}//else
}//for

return 0;
}
[解决办法]
我觉得比较好写的就是用递归~~只是递归对于学生比较难掌握~~我就是学生~~所以写错莫怪

void f(int x,int n)
{
if(n> =1)
{
int temp=x+n;
return temp*f(x,n-1);
}
return 1;
}

然后主函数里面调用就OK了
这个简单得多!

热点排行