C.输入双倍。

时间:2015-11-28 21:10:12

标签: c

我无法理解为什么它不起作用。 (X ^ 2> 1)

是必要的
double input()
{
    double x;
    printf("x:");
    scanf_s("%lf", &x);
    if((x*x)<=1)
        input();
    else return x;  
}

1 个答案:

答案 0 :(得分:1)

您的方法的问题是调用input的分支没有return语句。您可以像这样重写代码:

double input()
{
    double x;
    printf("x:");
    scanf_s("%lf", &x);
    if((x*x)<=1)
        return input();
    else
        return x;  
}

但是使用循环而不是递归会使代码更具可读性:

double input()
{
    double x;
    do {
        printf("x:");
        scanf_s("%lf", &x);
    } while (x*x<=1.0);
    return x;  
}