用递归求 成员解禁需要多少时间

题目是
群内某成员不老实
群主把他禁言十分钟
并规定
禁言每经过一分钟多加半分钟禁言时间

求这名倒霉的成员多长时间能解禁
参考
10 19.5
5.75 10.75
我该怎么写?

#include <stdio.h>
double f(double n)
{
if(n >= 1)
{
return 1+f(n-0.5);
} else
{
return n;
}
}
int main()
{
double time;
scanf("%lf",&time);
printf("%lf", f(time));
return 0;
}


float forbid_time(float time)
{
    float temp=time,next=0.f;
    if(temp<1.0f)
        return temp;
    while(temp >= 1.0f)
    {
        temp-=1.0f;
        next+=0.5f;
    }

    return (time-temp)+forbid_time(next+temp);
}

int main()
{
    float time,res=0.f;
    scanf("%f",&time);
    res=forbid_time(time);
    
    printf("%f",res);
    
    return 0;
}


float t = 10.0;
while (t>=1){
    t--;
    t+=0.5
}
cout << t << endl;