题目描述
数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。
输入描述:
输入数据有多组,每组占一行,由两个整数n(n < 10000)和m(m < 1000)组成,n和m的含义如前所述。
输出描述:
对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。
示例1
示例1
输入
81 4 2 2
输出
94.73 3.41
#include<cmath>
#include<stdio.h>
using namespace std;
double sqRootSum(double a,double b){
if(b--)
return a+sqRootSum(sqrt(a),b);
else
return 0;
}
int main() {
double a,b;
while(cin>>a>>b){
double c=sqRootSum(a,b);
printf("%.2f\n",c);
}
}
非递归算法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include<iostream>
#include"math.h"
#include <iomanip>
using
namespace
std;
int
main(){
int
m;
double
n,sum=0;
// int qiuhe(int i,int n);
cin>>n>>m;
//a=n;
for
(
int
i=0;i<m;i++){
sum+=n;
n=
sqrt
(n);
}
cout<<fixed<< setprecision(2)<<sum;
return
0;
}
|