花有重开之日 发表于 2021-12-31 21:36:38

递归算法的问题,求助!!

自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。本题要求对给定的非负整数n,求该级数的前n项和。

输入格式:

输入第一行中给出非负整数n(≤1000)。

输出格式:

在一行中输出部分和的值,保留小数点后八位。#include<stdio.h>

double fun(int n)
{
    if(n==0||n==1) return 1;
    else return n*fun(n-1);
}
int main()
{
    int n;
    scanf("%d",&n);
    int i;
    double sum=1.0;
    for(i=1;i<=n;i++)
    {
       sum+=1.0/fun(i);
    }
    printf("%.8lf\n",sum);
}
fun函数的解释与用处不明,求解!!!

傻眼貓咪 发表于 2021-12-31 21:59:57

#include <stdio.h>

unsigned long long f(int n){
    unsigned long long res = 1;
    for(int i = n; i > 0; i--) res *= i;
    return res;
}

int main()
{
    int n;
    double e = 0;
    scanf("%d", &n);
    for(int i = 0; i < n+1; i++) e += (1./f(i));
    printf("%.8lf", e);
    return 0;
}

傻眼貓咪 发表于 2021-12-31 22:08:29

#include <stdio.h>

unsigned long long f(int n){
    if(!n) return 1;
    else return n*f(n-1);
}

int main()
{
    int n;
    double e = 0;
    scanf("%d", &n);
    for(int i = 0; i < n+1; i++) e += (1./f(i));
    printf("%.8lf", e);
    return 0;
}

傻眼貓咪 发表于 2021-12-31 22:19:07

题目要求输入非负数 n(n <= 1000)根本不能用普通方法算(75 乘阶肯定溢出,更别说 1000 乘阶了)
页: [1]
查看完整版本: 递归算法的问题,求助!!