用 while 语句和 do-while 语句求分数序列:2/1,3/2,5/3,8/5,13/8,21/13,…前 20 项的和。
时间: 2023-06-02 22:02:49 浏览: 259
使用 while 语句:
```python
n1, n2 = 2, 1 # 分数序列的第一项是 2/1
sum = 0 # 和的初始值为 0
count = 1 # 计数器初始值为 1
while count <= 20:
sum += n1 / n2 # 将当前项的值加入和中
n1, n2 = n1 + n2, n1 # 计算下一项的值
count += 1 # 计数器加 1
print("前 20 项的和为:", sum)
```
使用 do-while 语句:
```python
n1, n2 = 2, 1 # 分数序列的第一项是 2/1
sum = 0 # 和的初始值为 0
count = 1 # 计数器初始值为 1
while True:
sum += n1 / n2 # 将当前项的值加入和中
n1, n2 = n1 + n2, n1 # 计算下一项的值
count += 1 # 计数器加 1
if count > 20:
break # 如果计数器超过 20,退出循环
print("前 20 项的和为:", sum)
```
相关问题
用 while 语句和 do-while 语句求分数序列:2/1,3/2,5/3,8/5,13/8,前20项的和
当我们需要使用`while`语句或`do-while`语句来计算分数序列的前20项之和时,可以按照以下步骤操作:
首先,我们需要创建一个计数器变量`i`表示当前的项数,初始值设为1。分数序列是一个斐波那契数列与它的倒数相乘得到的结果,所以我们可以用两个辅助变量存储斐波那契数列的当前值和上一项。
下面是用`while`语句实现的例子:
```python
# 初始化变量
sum = 0
fib = 1 # 斐波那契数列的第1项
prev_fib = 1 # 斐波那契数列的第0项(假设)
i = 1
while i <= 20:
# 计算分数
fraction = fib / prev_fib
# 累加分数到总和
sum += fraction
# 更新斐波那契数列
next_fib = fib + prev_fib
fib = next_fib
prev_fib = fib - prev_fib # 更新上一项
i += 1
print("前20项分数之和:", sum)
```
对于`do-while`循环,因为`do-while`至少会执行一次循环体,所以我们可以在循环开始之前就先计算第一项分数并加入总和,然后进入循环:
```csharp
// 类似Python,但这里假设使用类似C#的语法
int i = 1;
double sum = 2.0 / 1.0; // 加入第一项
bool continueLoop = true;
do {
double fraction = fib / prev_fib;
sum += fraction;
// ...(接下来的更新部分同上)
} while (continueLoop && ++i <= 20); // 当i等于21时跳出循环
Console.WriteLine($"前20项分数之和: {sum}");
```
以上两种语言的代码结构相似,都是通过循环逐项计算分数并将它们累加,直到达到20项为止。
cpp用 while 语句和 do-while 语句求分数序列:2/1,3/2,5/3,8/5,13/8,前20项的和
在C++中,可以使用while和do-while循环来计算给定分数序列的前20项之和。这个分数序列实际上是一个著名的数学序列,被称为Fibonacci数列,其中每一项都是前两项之和。为了用分数表示,我们可以将每个Fibonacci数除以前一项得到的整数部分作为分子。
下面是使用while循环的一个示例:
```cpp
#include <iostream>
using namespace std;
int fib(int n) {
if (n <= 0) return 0;
int a = 0, b = 1, c = 1;
while (c <= n) {
int part = c / b; // 分子
cout << a << "/" << b << " + ";
a += part * b; // 更新a为新的分子
c += b; // 更新下一个Fibonacci数
}
return a;
}
int main() {
int sum = 0;
int index = 1;
while (index <= 20) {
sum += fib(index++);
}
cout << "前20项的和是: " << sum << endl;
return 0;
}
```
这里是do-while版本,注意do-while会在执行完一次循环体后再检查条件:
```cpp
int main() {
int sum = 0;
int index = 1;
do {
sum += fib(index++);
cout << fib(index - 1) << "/" << fib(index - 2) << " + ";
} while (index <= 20);
cout << "\n前20项的和是: " << sum << endl;
return 0;
}
```
这两个版本都会计算出前20项Fibonacci数并用分数表示,然后累加求和。
阅读全文