考查递归。
package 人人网;
import java.util.Scanner;
/**
* 题目描述:数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。
* 输入:输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。
* 输出:对于每一组输入数据,输出该数列的和,每个测试实例占一行,要求经度保留2为小数。
* 样例输入:
* 81 4
* 2 2
* 样例输出:
* 94.73
* 3.41
*/
public class Q2017笔试_2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
int n = scanner.nextInt();
int m = scanner.nextInt();
double result = get((double)n, m);
System.out.println(String.format(".%2f", result));
}
}
/**
* 函数功能:递归求解数列n,m的和。
* @param n
* @param m
* @return
*/
public static double get(Double n, int m){
if(n <= 0){
return 0;
}
if(m == 0){
return n;
}
return n + get(Math.sqrt(n), m-1);
}
}