C语言的分段函数求值问题

【问题描述】

已知有如下分段离散函数f (x),其中自变量x为[-1000,1000】
请编写一个程序计算函数f(f(x)) 的值。注意,当函数值有小数时四舍五入保留2位小数。

img

【输入格式】
输入一个实数x。
【输出格式】
输出f(f(x))函数值,当函数值有小数时四舍五入保留2位小数。
【输入样例1】0.5
【输入样例2】-3
【输出样例1】0.31
【输出样例2】-1.10
【注意】

浮点数计算过程中请使用double类型。


#include<stdio.h>
#include<math.h>
double f(double x){
    double a;
    if(fabs(x)<=1){
        a=fabs(x-1)-2;
        return f(a);
    }
    else{
        a=1/(1+x*x);
        return f(a);
    }
}
int main(){
    double x,y;
    scanf("%lf",&x);
    y=f(x);
    printf("%.2lf\n",y);
    return 0;
}

我的运算结果是超时了
占用您一两分钟帮我解决一下

修改见注释处,供参考:

#include<stdio.h>
#include<math.h>
double f(double x)
{
    double a;
    if(fabs(x)<=1){
        a=fabs(x-1)-2;
        return a;   //修改
    }
    else{
        a=1.0/(1+x*x);//修改
        return a;   //修改
    }
}
int main(){
    double x,y;
    scanf("%lf",&x);
    y=f(f(x));      //修改
    printf("%.2lf\n",y);
    return 0;
}