我无法理解为什么它不起作用。 (X ^ 2> 1)
是必要的double input()
{
double x;
printf("x:");
scanf_s("%lf", &x);
if((x*x)<=1)
input();
else return x;
}
答案 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;
}