回 帖 发 新 帖 刷新版面

主题:递归求s=1/1!+1/2!……1/n!纠错

#include "stdio.h"
void main()
{
       int  fac(int x);
       int i;
       double s,j=1.0;
       printf("请输入一个数n:");
       scanf("%d",&n);
       for(i=0;i<=n;i++)
       s=j+j/fac(i);
       printf("1+1/1!+1/2!……1/n!=%f",s);
}
int fac(int x)
{
    int y;
    if(x==1)y=1;
    else y=x*fac(x-1);
    return y;
    }


系统会一直报错n未定义
不知道怎么改? 
哪位高手帮帮忙?

回复列表 (共7个回复)

沙发

n未定义你就定义一下嘛。

还有,我忍不住想劝楼主换教材

板凳


ls学校订的教材姐姐我不能左右

定义完了又出问题诶 
麻烦看下除了定义外还有什么问题是我不知道的?

3 楼

一、s没有初始化为0,这个你的结果总和输出,

二、累加公式应该是:
s = s + 1 / fac(i);

三、i应该从1开始的。

四、重复计算很多次,我觉得这并不是一个学习递归的好例子。

五、扯点题外话,好点的教材会告诉你#include <stdio.h>而不是#include "stdio.h",好的教材会告诉你写int main而不是void main。

4 楼


呵呵、我刚上大一!我看出你n真的是没定义、、

5 楼


恩、我的教材是C++,谭浩强的

6 楼


谢谢ls这么强悍!!运行结果终于对了
不过还是要说 那个s=s+j/fac(i);

7 楼

别跟初学者提什么效率,大家初学程序的时候都一样。
他语法就有问题,n确实是没有定义,在main开头加上int n;

我来回复

您尚未登录,请登录后再回复。点此登录或注册