Chinaunix首页 | 论坛 | 博客
  • 博客访问: 477632
  • 博文数量: 72
  • 博客积分: 1851
  • 博客等级: 上尉
  • 技术积分: 1464
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-16 17:50
文章分类

全部博文(72)

文章存档

2013年(1)

2012年(17)

2011年(51)

2010年(3)

分类: C/C++

2010-09-25 23:08:31

多项式的乘积公式为:z[n]=a[n]*x^n+a[n-1]*x^(n-1)+....+a[0]
如果写成递归形式的公式形式为:
z[0]=a[n]
z[1]=a[n-1]+x*z[0]
.......
z[k]=z[n-k]+x*z[k-1]
这样就能转换成为递归形式的程序了
代码如下:

#include <iostream>
using namespace std;
/*
*计算格式:Z[k]=x*Z[k-1]+a[n-k-1];
*/

template <class T,class X,class Z>
//a:数组 size:数组中最后一个元素 x:系数x z:存放乘积 k:乘积数组中索引

Z Ploy_number(const T *a,int size,const X x,Z *z,int k){
if(k==0)
{
z[k]=a[size];
cout<<"k:"<<k<<" z["<<k<<"]:"<<z[k]<<endl;
return z[k];
}
z[k]=Ploy_number(a,size,x,&z[k-1],k-1)*x+*(a+size-k);
cout<<"k:"<<k<<" z["<<k<<"]:"<<z[k]<<" x:"<<x<<endl;
return z[k];
}

int main(){
int a[]={1,2,3,4,5};
int z[5];
int num;
int x=1;
num=Ploy_number(a,4,x,z,4);
cout<<"x:"<<num<<endl;
}

编译后执行效果如下:

k:0 z[0]:5
k:1 z[1]:9 x:1
k:2 z[2]:12 x:1
k:3 z[3]:14 x:1
k:4 z[4]:15 x:1
x:15

这样就结束了,呵呵!
阅读(1477) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:求连续元素和最大

给主人留下些什么吧!~~