一、题目链接
http://noi.openjudge.cn/ch0105/32/
二、解题思路
⑴ 设定一个int变量t,用于暂存当前项的分子q,设定一个double变量ans,代表序列之和,初始时ans为0;
⑵ 从第1项开始,到第n项为止,通过循环,做如下操作:
① 首先,令ans = ans + 1.0 * q / p,也即将当前项加到和上;
② 其次,令t = q,也即将当前项的分子暂存在t中;
③ 然后,令q = q + p,也即更新下一项的分子;
④ 最后,令p = t,也即更新下一项的分母;
⑶ 循环结束后,ans中存储了序列之和。
三、程序代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int p = 1;
int q = 2;
int t;
double ans = 0;
for (int i = 1; i <= n; i++) {
ans = ans + 1.0 * q / p;
t = q;
q = q + p;
p = t;
}
System.out.printf("%.4f", ans);
}
}