sunjunior 2020-01-31
已知

计算x=4.2,n=1以及x=2.5,n=15时f的值。
输入x和n。
函数值,保留两位小数。
4.2 10
3.68
1.看见这种一个套着一个还带着诡异符号的, 基本上都是函数+循环(递归嘛)的套路。 话说这题一开始我没看明白, 从n怎么变到x+1的??? 再看看, 好像是由n变到1,然后最后那个根号里面有个x; 让我们递归一下,写写代码。2.这就是正解了
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
double gen(double x,double n);//声明一个double型的函数,最后保留两位输出。
int main()
{
double n,x;
double result;
cin>>x>>n;
result=gen(x,n);
printf("%.2lf\n",result);
return 0;
}
double gen(double x,double n)//定义一下这个“根”函数
{
if(n==1)
return sqrt(1+x);
else
return sqrt(n+gen(x,n-1));//这时候就是递归最灵魂的操作,调用自己
}3.该递归的就要递归,
递归的题和一般的函数+循环有区别(其实也不大),
基本上有以下特征:
(1):一个函数套自己,比如f(f(x)),
正常的循环题只有不同参数函数值之间的加法或乘法。
(2):大部分的题,不用递归你做不出来...(或是不好做...)
所以嘛,做题之前一定先想想要用什么算法或者结构什么的,
不然代码打到一半不会打了太尴尬...