问题
代码
#include <stdio.h>
#include <math.h>
int main() {
double a = 2,y;
long int n=1;
do{
y=a;
n+=1;
a=pow(1+1/(double)n,(double)n);
}while(a-y>1e-6);
printf("e = %f\nn = %ld\n",a,n);
return 0;
}
}
结果
注意
在我写代码时,遇到了一个坑。题目中括号跟你讲的n为充分大的正整数,当然是要定义long int n;
那么问题来了,pow()
函数的原型是:double pow(double x,double y);因此n需要进行强制转换类型才可以正确输出结果。同时
printf()中的格式
转换为%ld
。