20240321每日一题题解
1.20240318每日一题题解2.20240317每日一题题解3.20240319每日一题题解4.20240320每日一题题解
5.20240321每日一题题解
6.20240322每日一题题解7.20240323每日一题题解8.20240324每日一题题解9.20240325每日一题题解10.20240326每日一题题解11.20240327每日一题题解12.20240328每日一题题解13.20204329每日一题题解14.20240401每日一题题解15.20240402每日一题题解16.20240403每日一题题解17.20240409每日一题题解18.20240410每日一题题解19.20240411每日一题题解20240321每日一题题解
Problem
已知 。
计算 的值。
输入 和 。输出这个函数值,并且注意需要保留两位小数。
例如,输入4.2 10
,则应该输出3.68
Solution
递归?循环?
说实话这道题是有一定思考量的,初看可能会无从下手。
可以得出普遍结论:
如此,就可以依照我们昨天的递归来解决了。
当然,也可以用循环解决这道题。
我们从内部向外剖析:
这个函数的最内层是,而后再给加上了,再套了根号;再加上了,再套了根号;再加上了,再套了根号;……;再加上了,再套了根号;再加上了,再套了根号。
所以可以用写成for
循环的格式,每次给答案执行+i
再套根号,边界是i<=n
。
保留两位小数
c++
中有两种保留两位小数的方法,分别是给cout
的printf
使用的。
虽然老师上课说
printf
是c
的,其实c++
中依然可以使用printf
,其在头文件cstdio
当中,完完全全可以正常使用。我认为其也是c++
不可或缺的一部分。
cout
默认情况下,cout
使用 6 个有效数显示浮点值,其余自动四舍五入,有后缀0则会自动舍去。
使用 cout<<fixed<<setprecision(2)
来控制接下来输出的小数位数,括号里是几就保留几位小数。
这个函数在头文件#include<iomanip>
中。
printf
这个可以类比python
中的%
格式符:
printf("%.2lf\n",f(x,n));
表示保留小数点后两位。
Code
递归写法
#include<iostream>
#include<cmath>//使用sqrt
#include<iomanip>//cout的setprecision控制小数位数
#include<cstdio>//使用printf
using namespace std;
double f(double x,int n)
{
if(n==1)
{
return sqrt(1+x);
}
return sqrt(n+f(x,n-1));
}
int main()
{
double x;
int n;
cin>>x>>n;
cout<<fixed<<setprecision(2)<<f(x,n)<<endl;
// printf("%.2lf\n",f(x,n));
return 0;
}
循环写法
#include<iostream>
#include<cmath>//使用sqrt
#include<iomanip>//cout的setprecision控制小数位数
#include<cstdio>//使用printf
using namespace std;
int main()
{
double x;
int n;
cin>>x>>n;
double ans=x;
for(int i=1;i<=n;i++)
{
ans=sqrt(i+ans);
}
cout<<fixed<<setprecision(2)<<ans<<endl;
// printf("%.2lf\n",f(x,n));
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?