输入一个正数x和一个正整数n,求下列算式的值。要求定义两个调用函数:
(1)fact(n)计算n的阶乘;
(2)mypow(x,n)计算x的n次幂(即xn),两个函数的返回值类型是double。
x - x2/2! + x3/3! + ... + (-1)n-1xn/n!
×输出保留4位小数。
输入格式
x n
输出格式
数列和
样例输入
2.0 3
样例输出
1.3333
我的核心思想分别用for循环表示阶乘、以及x的n次方。
观察数列最后是有规律的,假如是第n项,就是 -1的n+1次方 乘 X的n次方 除以 fact(n)
差不多就是这个样子,做熟悉就行
#include<iostream>
#include<iomanip>
using namespace std;
//阶乘
double fact(double n) {
double res1 = 1.0;
for (int i = 1; i <= n; i++) {
res1 = res1 * i;
}
return res1;
}
//x的乘方n次
double mypow(double x, double n) {
double res2 = 1.0;
for (int i = 0; i < n; i++) {
res2 = res2 * x;
}
return res2;
}
int main() {
double X, N;
cin >> X >> N;
double result = 0;
for (int i = 1; i <= N; i++) {
result += mypow(-1, i - 1) * mypow(X, i) / fact(i); //-1的n+1和n-1次方都是同理
}
//cout << fixed << setprecision(4) << result << endl;
printf("%.4f", result);
return 0;
}