请问怎么计算(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了
这个简单得多!