怎样在R语言下编写程序计算∑1n!

Python018

怎样在R语言下编写程序计算∑1n!,第1张

#include <stdio.h>

int main()

{

double sum=0,t=1

int i,n

scanf("%d",&n)

for(i=1i<=ni++)

{

t/=i

sum+=t

}

printf("%lf",sum)

return 0

}

最简单但计算量最大的是泰勒公式: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 <- 1L

ni <- 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时,精度就已经达到要求了。