#include <iostream>
#include <iomanip>
using namespace std;
const int N = 5;
double A[N] = { 1, 2, 3, 4, 5 };
double calc(double x, double* a, int n = 0)
{
if (n == N-1) return a[n];
return calc(x,a,n+1)*x+a[n];
}
double series(double x, double* a)
{
double sum = 0.0;
for(int i = N-1; i >= 0; --i)
sum = sum*x + a[i];
return sum;
}
int main(int argc, const char * argv[])
{
for(double x = 0.0; x < 5.0; x += 0.5)
{
cout << setw(8) << calc(x,A) << " " << setw(8) << series(x,A) << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTiA9IDU7Cgpkb3VibGUgQVtOXSA9IHsgMSwgMiwgMywgNCwgNSB9OwoKZG91YmxlIGNhbGMoZG91YmxlIHgsIGRvdWJsZSogYSwgaW50IG4gPSAwKQp7CiAgICBpZiAobiA9PSBOLTEpIHJldHVybiBhW25dOwogICAgcmV0dXJuIGNhbGMoeCxhLG4rMSkqeCthW25dOwp9Cgpkb3VibGUgc2VyaWVzKGRvdWJsZSB4LCBkb3VibGUqIGEpCnsKICAgIGRvdWJsZSBzdW0gPSAwLjA7CiAgICBmb3IoaW50IGkgPSBOLTE7IGkgPj0gMDsgLS1pKQogICAgICAgIHN1bSA9IHN1bSp4ICsgYVtpXTsKICAgIHJldHVybiBzdW07Cn0KCmludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQp7CiAgICBmb3IoZG91YmxlIHggPSAwLjA7IHggPCA1LjA7IHggKz0gMC41KQogICAgewogICAgICAgIGNvdXQgPDwgc2V0dyg4KSA8PCBjYWxjKHgsQSkgPDwgIiAgICIgPDwgc2V0dyg4KSA8PCBzZXJpZXMoeCxBKSA8PCBlbmRsOwogICAgfQp9