算法引论之多项式求解(递归和非递归实现)

来源:互联网 发布:济南专业淘宝拍摄 编辑:程序博客网 时间:2024/05/18 02:36
/*
多项式求解:
输入:系数,阶数(决定项数),x值
输出:多项式的值
递归本质:可以细分为小问题(递),然后小问题累积得出结果(归)-设计程序时,为找到出口点,并返回;  
实现1:非递归;
实现2:递归;
*/
#include <stdio.h>
#include <stdlib.h>
#include<iostream>
using namespace std;
 
int polynomialNorm1(int i,int a[],int x)
{
    int sum=a[0]*x+a[1];
    for(int j=2;j<i+1;j++)
    {
        sum=sum*x+a[j];
    }
    return sum;
}

int polynomialNorm2(int i,int n,int a[],int x)
{
    if(n>0)
    return a[n]+polynomialNorm2(i,n-1,a,x)*x;
    else
    return a[n];
}

int main()
{
    //非递归
    int i,a[10],x;
    cout<<"x的值"<<endl;
    cin>>x;
    cout<<"x的阶数"<<endl;
    cin>>i;
    cout<<"多项式中的系数"<<endl;
    for(int j=0;j<=i;j++)
    cin>>a[j];
    int sum=polynomialNorm1(i,a,x);
    cout<<sum;
    system("pause");
    //递归
     sum=polynomialNorm2(i,i,a,x);
    cout<<sum;   
    
    return 0;
}
0 0
原创粉丝点击