用C++计算1+1/2+1/4+1/8加到1/n求和,结果用分数输出:
时间: 2023-12-04 14:04:12 浏览: 95
以下是用C++计算1+1/2+1/4+1/8加到1/n求和,结果用分数输出的代码:
```c++
#include <iostream>
using namespace std;
int main() {
int n;
double sum = 0.0;
cout << "请输入n的值:";
cin >> n;
for (int i = 0; i < n; i++) {
sum += 1.0 / (1 << i);
}
cout << "结果为:" << sum << endl;
return 0;
}
```
相关问题
给定一个正整数n,计算1+1/3+1/5….的前n项之和
算法1:暴力求解
直接按照题意计算前n项的和即可,时间复杂度为O(n)。
C++ 代码
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
double sum = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
sum += 1.0 / (2 * i - 1);
}
cout << sum << endl;
return 0;
}
```
算法2:优化求解
观察到每一个分数的分母都是奇数,可以利用等差数列求和公式将分母写成2n-1的形式,即1/1,1/3,1/5,1/7,1/9...可以转化为1/1,1/3,1/5,1/7,1/9...的和,这个和可以用等差数列求和公式计算,时间复杂度为O(1)。
C++ 代码
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
double sum = 0;
cin >> n;
sum = n * n * 1.0 / (2 * n - 1);
cout << sum << endl;
return 0;
}
```
用c++编写 循环求分数序列:2/1,3/2,5/3,8/5,13/8,21/13,…,前n项之和
以下是用 C 语言编写循环求分数序列的程序:
```c
#include<stdio.h>
int main(){
int n;
double sum=0.0, a=2.0, b=1.0, temp;
printf("请输入求和的项数n: ");
scanf("%d", &n);
for(int i=1; i<=n; i++){
sum += a/b;
temp = a;
a = a + b;
b = temp;
}
printf("前%d项的和为%.2lf\n", n , sum);
return 0;
}
```
运行程序后,输入求和的项数 n,程序会输出前 n 项分数序列的和。例如,如果输入 n=5,则程序输出结果为:
```
请输入求和的项数n: 5
前5项的和为7.47
```
需要声明的是,以上程序并没有使用循环求斐波那契数列的方法,而是用了分数序列的通项公式来计算分数的值,因此精度可能会有所损失。