
最简单但计算量最大的是泰勒公式:e=1+1/1!+1/2!+1/3!+1/4!+...
下面是求e的R语言函数:
e_fun <- function(n) {etemp <- 1
ni <- 1L
for (i in 1:n) {
etemp <- etemp + 1 / ni
ni <- ni * (i + 1)
}
return(etemp)
}
不过你题目中要求的是求到精度为0.00001就停止,所以可以采用repeat循环:
i <- 1Lni <- 1L
etemp <- 1
repeat {
etemp1 <- etemp
etemp <- etemp + 1 / ni
ni <- ni * (i + 1)
i <- i + 1
if (etemp - etemp1 < 0.00001) break
}
i
etemp
在最后可以看到,求到i=10时,精度就已经达到要求了。
/*
2.718282
Press any key to continue
*/
#include <stdio.h>unsigned Fact(unsigned n) {
unsigned i,fact = 1
for(i = 1 i <= n ++i)
fact *= i
return fact
}
double Exp(int n) {
double e = 1.0
int i
for(i = 1i <= ni++)
e += 1.0/Fact(i)
return e
}
int main() {
printf("%lf\n",Exp(20))
return 0
}
#include <stdio.h>
int main() {
long int i, k
double n=1.0l/*n!
double s = 1.0l
for (i = 1i <50i++) {
n=n*i
s += 1.0 / n
}
printf("e = %lf\n", s)
getchar()
return 0
}
或:
public class Test{
public static void main(String args[]){
double sum=1,n=1
double e=1
for(n=1n<=10n++){
sum=sum*n
e+=1/sum}
System.out.println("e="+e)
}
}
得到的值为:2.7182818011463845...
随着n值越专大得到的e值越精属确。
扩展资料:
C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。
参考资料来源:百度百科-c语言
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)