现在的位置: 首页 > 综合 > 正文

[数值算法]多项式的秦九韶算法

2012年09月24日 ⁄ 综合 ⁄ 共 1011字 ⁄ 字号 评论关闭

多项式的秦九韶算法,一般数值计算一类课程的”Hello World”级的内容哟~~~~

做了递归和非递归两个版本:

/*UnRecursive Version*/

Type qjz(Type* pArr,Type x,int n)

       {

             Type ans=0;

             asserts(pArr!=NULL,"in qjz:pass in arr error");

             asserts(n>=0,"in qjz :pass n is <0");

              n--;

              ans=pArr[n];

              while(n>0)

              {

                     n--;

                     ans=pArr[n]+x*ans;

              }

              return ans;

       }

      

/*Recursive Version*/

Type qjzRecursive(Type* pArr,Type x,int n,int currentNum)

       {

           asserts(pArr!=NULL,"in qjzRecursive:pass in arr error");

              if(currentNum+1==n)return pArr[currentNum];

              else return pArr[currentNum]+x*qjzRecursive(pArr,x,n,currentNum+1);

       }

      

/*test program*/      

#include "qjz.h"

#include <stdio.h>

#include <string.h>

void main()

{

      

       double a[]={1,2,3,4,5};

       double x=11;

       double ans=qjz(a,x,5);

       clrscr();

       printf("The answer is:%f",ans);

       ans=qjzRecursive(a,x,5,0);

       printf("Using the Recursive,ans is:%f",qjzRecursive(a,x,5,0));

}

抱歉!评论已关闭.