请问我写的代码哪里错了为什么答案会是0,是哪里错了吗,还是少写了什么

我写的代码

#include <stdio.h>
#include <math.h>

int main() {
    int n;
    double xn1, xn, x;
    scanf("%d", &n);
    for (x = 99999999.0; x> 2; x--) {
        xn1 = sqrt(xn + 2);
    }
    printf("x[%d]=%.10f",n,xn);
    return 0;
}

任务描述
有一个神奇的迭代公式:x
n+1 = x n+2,无论x的初值(大于2的正数)选的多么大,若干次迭代之后,x都与2无限接近,也就是说x序列的极限是2。假设x 0=99999999.0(8个9),编程输入一个正整数n,输出x n的值(保留10位小数)。

输入样例:
8
输出样例:
x[8]=2.0051798692
输入样例:
16
输出样例:
x[16]=2.0000000790


#include <stdio.h>
#include <math.h>
double func(int n)
{
    if (n == 0) return 99999999.0;
    return sqrt(func(n - 1) + 2);
}
int main() {
    int n;
    scanf("%d", &n);
    printf("x[%d]=%.10f", n, func(n));

img

x == 99999999.0
==改成=啊

大括号是不是少了,作用域不对啊,如果我的回答有对的地方,请告诉我,我也急需提升