注册 登录
编程论坛 VC++/MFC

就20行代码,简单的吊炸了!我弱暴了!--编译通过就是结果不对!

云の翼 发布于 2012-09-16 19:50, 924 次点击
#include <stdio.h>
int f(int n)
{
    if(n==1)
    {
    return 1;
    }
    else
    {
        return f(n-1)/n;
    }
}
int main()
{
    int i,m;
    float sum=0.0;
    printf("请输入m的值:");
    scanf("%d",&m);
    for(i=1;i<=m;i++)
    {
        sum=sum+f(i);
    }
    printf("e的近似值为:%.5f",sum);
    return 0;
}
//结果总是e=1.00000


[ 本帖最后由 云の翼 于 2012-9-16 19:53 编辑 ]
5 回复
#2
zklhp2012-09-16 19:57
程序代码:

#include <stdio.h>
float f(int n)
{
    if(n==1)
    {
    return 1.0;
    }
    else
    {
        return f(n-1)/n;
    }
}
int main()
{
    int i,m;
    float sum=0.0;
    printf("请输入m的值:");
    scanf("%d",&m);
    for(i=1;i<=m;i++)
    {
        sum=sum+f(i);
    }
    printf("e的近似值为:%.5f",sum);
    return 0;
}


这样对么

而且 貌似你发错版了
#3
云の翼2012-09-16 20:04
没错,我刚刚改正过来了,正如你所改的,而且还要令sum=1.0。呵呵,我是脑子僵硬了,想不动了都坐在笔记本前好多天了--good luck experienced man!
#4
zklhp2012-09-16 20:18
以下是引用云の翼在2012-9-16 20:04:09的发言:

没错,我刚刚改正过来了,正如你所改的,而且还要令sum=1.0。呵呵,我是脑子僵硬了,想不动了都坐在笔记本前好多天了--good luck experienced man!

写代码要琢磨 什么时候该怎么做 关键就是学的这个思路 语法其实还是次要的

祝你成功
#5
stanics2012-09-19 22:04
#include <stdio.h>
double f(int n)
{
    if(n==1)
    {
        return 1.0;
    }
    else
    {
        return f(n-1)/n;
    }
}
void main()
{
    int i,m;
    double sum=0.0;
    printf("请输入m的值:");
    scanf("%d",&m);
    for(i=1;i<=m;i++)
    {
        sum=sum+f(i);
    }
    printf("e的近似值为:%.5f\n",sum);
}
数据类型有问题!
请给分.....................
#6
liupeng58432012-09-22 16:59
难道说是我技拙,怎么看
float f(int n)
 {
     if(n==1)
     {
     return 1.0;
     }
     else
     {
         return f(n-1)/n;
     }
 }我看不出代码的意图
1