麻烦各位帮我看看这段代码的问题。

P1035 [NOIP2002 普及组] 级数求和

胡漠杨 @ 2020-03-14 21:06:04

#include<stdio.h>
float sum(float (1/n)); 
int main() 
{
    int n,k;
    scanf ("%d",&k);
    for (n=1;;n++)
    {
        if (k<sum(1/n))
        {
            break;
        }
        printf ("%d",n);
    }
    return 0;
}

float sum(float (1/n))
{
    int n;
    if (n==1)
    {
        return 1;
    }
    else
    {
        return sum(1/(n-1))+(1/n); 
    }
}

by Marser @ 2020-03-14 21:11:29

@return20071007 看到的神仙人太多了,让您见笑了


by UnyieldingTrilobite @ 2020-03-14 21:12:22

@Marser

这个真的可以运行,窝博客里好像第一篇有这个题解


by shao_qian @ 2020-03-14 21:12:34

试着学一下while?


by UnyieldingTrilobite @ 2020-03-14 21:12:36

不算推销博客罢


by 胡漠杨 @ 2020-03-14 21:15:19

#include<stdio.h>
double sum(double n); 
int main() 
{
    int n,k;
    scanf ("%d",&k);
    for (n=1;;n++)
    {
        if (k<sum(1/n))
        {
            break;
        }
        printf ("%d",n);
    }
    return 0;
}

double sum(double n)
{
    if (n==1)
    {
        return 1;
    }
    else
    {
        return sum(n-1)+(n); 
    }
}

by UnyieldingTrilobite @ 2020-03-14 21:15:48

有问题的


by Marser @ 2020-03-14 21:18:13

#include<stdio.h>
double sum(int n)
{
    if (n==1)
    {
        return 1;
    }
    else
    {
        return sum(n-1)+(1.0/(double)n); 
    }
}
int main() 
{
    int n,k;
    scanf ("%d",&k);
    for (n=1;;n++)
    {
        if (k<sum(n))
        {
            break;
        }
    }
    printf ("%d",n);
    return 0;
}

by 胡漠杨 @ 2020-03-14 21:22:27

@Marser 请问 return sum(n-1)+(1.0/(double)n) 中, "(double)n" 是什么意思?


by Marser @ 2020-03-14 21:26:03

@胡漠杨 把int类型的n强制转换为double


by 胡漠杨 @ 2020-03-14 21:33:17

@Marser 好的好的,非常感谢,初学C语言,还有很多不懂,麻烦您了。


上一页 | 下一页