3 条题解
-
8
解析
image.png
题解
#include <iostream> #include <iomanip> using namespace std; double f(double x, int n) { if (n > 1) return x / (n + f(x, n - 1)); else return x / (1 + x); } int main() { int n; double x; cin >> x >> n; cout << fixed << setprecision(2) << f(x, n); return 0; }
-
3
先看眼题:
因为要保留两位小数,所以要导入一个iomanip
接下来找边界条件与递归式
边界条件:
根据题目可以看出来,当n==1时,f(x,n)的返回值为x / (1 + x)
所以,边界条件就是n==1,返回值就是x / (1+x)
递归式:
当n==2时:
f(x,n) = x / (n + (x / (1 + x)))
把x / (1 + x)换成函数可得
f(x,n) = x / (n + f(x,1))
再把1换成n-1就可以得到递归式了
f(x,n) = x / (n + f(x,n - 1))
具体代码如下
#include <iostream> #include <iomanip> using namespace std; double f(double x,double n) { if(n == 1) return x / (1 + x); else return x / (n + f(x,n - 1)); } int main() { double x,n; cin >> x >> n; cout << fixed << setprecision(2) << f(x,n); return 0; }
- 1
信息
- ID
- 308
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 1036
- 已通过
- 529
- 上传者