2 sinat 34654042 sinat_34654042 于 2016.05.05 17:39 提问

C++用递归函数计算自然数e的值

如何编写一个递归函数近似计算自然数e,根据公式e=1+1/1!+1/2!+1/3!+1/4!+......计算e的值.(一定要用递归的方法!!)

e的表达式是:
n
e= ∑1/k!
k=o

1个回答

o7456
o7456   2016.05.05 19:13
已采纳

用到了两个递归,不过一旦n的值过大,阶乘的结果会越界!

LONG64 Fact(int n)
{
    if (n==1)
    {
        return 1;
    }
    return Fact(n-1)*n;
}

long double Cal_e(int n)
{
    if (n==1)
    {
        return 1.0;
    }

    return Cal_e(n-1)+(long double)(1.0/(long double)Fact(n-1));
}

o7456
o7456 回复sinat_34654042: 恩,实际上除法中有个浮点型,可以不用加long double
大约 2 年之前 回复
sinat_34654042
sinat_34654042 return Cal_e(n-1)+(long double)(1.0/(long double)Fact(n-1)); //这一句中不加long double结果好像也是一样的,加long double 是强制类型转换吗?
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
用递归方法求前n个自然数的平方和
题目要求:用递归方法求前n个自然数的平方和 分析:构造一个递归函数,当n>1的时候,则进行递归调用,当n=1的时候,停止递归;每次递归中,需要完成n*n+余下n-1个自然数的平方和的工作。 方法一: #include using namespace std; int digui(int n,int total){     if(n==1){        total+=n*n;
java求自然数E
Application:import java.io.*;   public class Xiti333      {    int n=1;    int sum;    double sum1;         public int jiecheng(int n)    //先求阶乘    {      if(n==0) sum=1;      if(n>=1)        {       
【C语言】编写一个函数实现n^k,使用递归实现。
//编写一个函数实现n^k,使用递归实现 #include int fun(int n,int k) //求n的k次方 { int sum; if (k==0) { sum=1; } else { sum=n*fun(n,k-1); } return sum; } int main () { printf("%d\n",fun(2,3)); return 0
28、利用递归计算自然数 n 的阶乘
// 利用递归计算自然数 n 的阶乘 #include<stdio.h> long f( int n) { long result; if(n>1) { result = n*f(n-1); } else { result = n; } return result; }void main() { int n; lon
利用递归实现1到100以内的求和
一、什么叫做递归?
用C++调用递归函数计算阶乘
/* 时间:2018.1.25 作者:小岛的水 */ #include using namespace std; //调用递归函数计算阶乘 int main() {  int fac(int n);  int a;  cin >> a;  cout  return 0; } int fac(int n) {  if (n == 0 || n == 1)retur
C语言 计算e及e的次方的近似值
个人C语言学习笔记.......
C语言求自然对数的底e
/*求e */ #include main() { int n = 1, k = 1; double a, e = 1; printf("请输入精确度:\n"); scanf("%lf",&a); do{ k*=n; n++; e += 1.0/k; }while(1.0/k>a); printf("%lf",e); }
练习10-1 使用递归函数计算1到n之和(10 分)
题目来源:点击打开链接本题要求实现一个用递归计算1+2+3+…+n的和的简单函数。函数接口定义:int sum( int n ); 该函数对于传入的正整数n返回1+2+3+…+n的和;若n不是正整数则返回0。题目保证输入输出在长整型范围内。建议尝试写成递归函数。裁判测试程序样例:#include &amp;lt;stdio.h&amp;gt; int sum( int n ); int main() { ...
用递归的的方法求n!的值
#include double Recur(); //定义递归函数   int main() { int n; printf("Please input a number:"); while(1) { if(scanf("%d",&n) != 1 || getchar() != '\n') //判断输入函数的返回值是否为1,如果为1,表示输入的格式正确 //判断输入的数值后