编写程序,求e的值。用C语言编写

编写程序,求e的值。用C语言编写,第1张

#include<stdio.h>

long jc(int n){//不使用递归

    int i = 1 

    long m = 1

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

        m *= i

    return m     

 } 

long 哗绝旅jc(int n){ //使用递归 

    if(n)

        return (long)(n * jc(n-1))

    else

        return 1

}

int main(){使用for循环 

    float e = 1.0

    int i = 1

    for(i = 1i <= 50i ++){

        e += 1/jc(i)

    }

    printf("%f",e)

    return 0

}

int main(){//使用while

    float e = 1.0

    int i = 1

    while(i <= 50){

    宏扰    e += 1/jc(i)

        i ++

    乱凳}

   printf("%f",e)

   return 0

}

/*

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

}

蒙特卡洛方法是通过随机抽样来估计数值的方法。我们可以通过蒙特卡洛方法来估计e的值。具体方法如下:

1.随机在单位正方形内产生n个点(n越大,结果越精确)。

2.计算出单位圆内的点数k,k/n即为单位圆的面积除以单位正方形的面积,即pi/4。

3.将结果乘以4即可得到pi的估计值,再除以2即为e的估计值。

下面是使用C语言实现蒙特卡洛方法亏拍计算e的程序示例:

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <time.h>

#define N 1000000 // 生成随机数的个数

int main() {

srand((unsigned)time(NULL)) // 初始化随机数生成器

int i, k = 0

double x, y, e

for (i = 0i <Ni++) {

x = (double)rand() / RAND_MAX // 生成[0,1)内的随机数

y = (double)rand() / RAND_MAX // 生成[0,1)内的随机数

if (x * x + y * y <= 1) { // 判断是否在单位圆内

k++

}

}

e = (double)k / N * 4 / 2 // 计算e的估计值

printf("e = %lf\n", e)

return 0

}

在本程序中,我们使销卜羡用rand()函数生成[0,1)内的随机数,并使用if语句判断随机点是否在单位圆内。最后,根据蒙特卡洛方法的原理计算出e的估计值,并输出结果。

需要注意的是,蒙特卡洛方法是一种估计方法,估计结果的精度取决于生成的随机数个数。在本程序中,我们使用了1000000个随机数,可以得到弊坦较为精确的估计结果。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12306053.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存