c++ 无论输入什么输出都是1,哪里出现问题?

img

#include using namespace std;

int f1(int j,float i) { if (j == 0) { return 1; } else { return f1(j - 1,i) * (j / (2*j +1)); } }

int main() { int j; float result;

float i;
cin >>i ;
for (j=0;f1(j,i)>i;j++)
    result += f1(j,i);
cout <<  result <<endl;
return 0;

}

#include <iomanip>
#include <iostream>
using namespace std;

int main()
{
    long long dx = 1, dy = 1, n = 1;
    double i, sum = 0, result;
    cin >> i;

    while (1)
    {
        if (n > 2)
            dx *= n - 1;
        dy *= 2 * (n - 1) + 1;
        result = dx * 1.0 / dy;
        sum += result;
        if (result < i)
            break;
        n++;
    }

    cout << setprecision(11) << sum * 2 << endl;

    return 0;
}

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/16251425295822021-07-01 20-27-55屏幕截图.png)