本博文源于C语言基础,一天不敲代码自己知道,代码敲得少,都感觉好生疏。还好一切都捡回来了。刚才同学问我一道C语言题目,我接过来,然后想了一下,觉得写下这个题解。如果大家有需要可以点赞收藏。也可以观望一二。
题目再现
3、 输入实数x和正数eps,计算多项式 1 − x + x 2 2 ! − x 3 3 ! + x 4 4 ! − x 4 4 ! + x 5 5 ! . . . 1-x+\frac{x^2}{2!}-\frac{x^3}{3!}+\frac{x^4}{4!}-\frac{x^4}{4!}+\frac{x^5}{5!}... 1−x+2!x2−3!x3+4!x4−4!x4+5!x5...的和,直到末项的绝对值小于eps为止。
实验效果
输入1,和0.6
1-1/1+1/2=0.5结果
因此,你输入1和0.5的时候,答案会显示0.5
实验思想
学会用归纳思想,首先-1在变化,x上面的次数在变化,分母下面的阶乘在变化,然后分析题目最后的终止条件,就是abs(s)<eps就行。它的总结通项是:
( − 1 ) n x n n ! (-1)^n\frac{x^n}{n!} (−1)nn!xn
写出这个公式后,利用输入、处理、输出,直接得出结果。
实验效果
#include<stdio.h>
#include<math.h>
//jc是求阶乘用的,比较死板
int jc(int n)
{
int res = 1;
for(int i = 1;i<=n;i++)
res *= i;
return res;
}
int main()
{
double x;
scanf("%lf",&x);
double eps;
scanf("%lf",&eps);
int flag = -1;
double res = 1.0;
int n = 1;
while(1)
{
double s = (pow(flag,n))*((pow(x,n))/jc(n));//他是通项,flag就是-1,n就是通项的n,其余查考通项公式
res = res + s;//最后的累加结果
if(abs(s)<eps){
//判定结果
break;
}
n++;
flag = -flag;
}
printf("%lf",res);//输出
return 0;
}
总结
一天不敲代码自己直到,一天不学英语自己知道。一天不学习数学自己知道,一直相信只有不断地看,才会有新发现,无他,唯手熟尔。以前敲代码都是看着教材敲,动脑子也不用动脑子,现在直接给我题目后,我要把它转化为几步,然后逐步实现,最终展现出结果。