题解
【入门】求1/1+1/2+2/3+3/5+5/8+8/13+13/21……的前n项的和
1 条题解
-
0
解题思路
用两个数保存相邻的斐波那契数,每次把当前分数加入答案后更新两个数。
参考代码
// 先读入题目给出的输入数据。 // 用简单的循环完成题目要求。 #include <iostream> #include <iomanip> using namespace std; int main() { int n; cin >> n; int a = 1, b = 1; double sum = 0; for (int i = 1; i <= n; i++) { // 当前一项是前一个数除以后一个数。 sum += (double)a / b; int t = a; a = b; b = t + b; } cout << fixed << setprecision(3) << sum << endl; return 0; }复杂度分析
代码只使用了简单变量、数组、循环和判断。时间复杂度根据题目的枚举或扫描过程计算,额外空间主要是输入数组,空间复杂度为 O(n)。
- 1