有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

简介: 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

C语言实现


在C语言中,我们可以直接通过迭代计算每一项的分子和分母,并累加它们的和(注意这里累加的是每一项的数值,即分数转换为浮点数后的值)。这里给出两种实现方式:


方法1:直接计算并累加


c复制代码
 #include <stdio.h>  
 
   
 
 int main() {  
 
     double sum = 0.0;  
 
     int numerator = 2, denominator = 1;  
 
     for (int i = 0; i < 20; i++) {  
 
         sum += (double)numerator / denominator;  
 
         int nextNumerator = numerator + denominator;  
 
         denominator = numerator;  
 
         numerator = nextNumerator;  
 
     }  
 
     printf("The sum of the first 20 terms is: %.15f\n", sum);  
 
     return 0;  
 
 }



方法2:使用结构体和函数封装


如果你想要更结构化的代码,可以使用结构体来存储分数,并定义函数来计算下一项和累加和。


c复制代码
 #include <stdio.h>  
 
   
 
 typedef struct {  
 
     int numerator;  
 
     int denominator;  
 
 } Fraction;  
 
   
 
 Fraction getNextFraction(Fraction f) {  
 
     Fraction next;  
 
     next.numerator = f.numerator + f.denominator;  
 
     next.denominator = f.numerator;  
 
     return next;  
 
 }  
 
   
 
 double sumFractions(int n) {  
 
     double sum = 0.0;  
 
     Fraction f = {2, 1};  
 
     for (int i = 0; i < n; i++) {  
 
         sum += (double)f.numerator / f.denominator;  
 
         f = getNextFraction(f);  
 
     }  
 
     return sum;  
 
 }  
 
   
 
 int main() {  
 
     printf("The sum of the first 20 terms is: %.15f\n", sumFractions(20));  
 
     return 0;  
 
 }



Python实现


Python的实现通常更加简洁和直观。


方法1:直接计算并累加


python复制代码
 def sum_fractions(n):  
 
     numerator, denominator = 2, 1  
 
     total_sum = 0.0  
 
     for _ in range(n):  
 
         total_sum += numerator / denominator  
 
         numerator, denominator = numerator + denominator, numerator  
 
     return total_sum  
 
   
 
 print(f"The sum of the first 20 terms is: {sum_fractions(20)}")


方法2:使用生成器


如果你想要一个更“Pythonic”的解决方案,可以使用生成器来生成分数序列,并计算它们的和。


python复制代码
 def fraction_generator(n):  
 
     numerator, denominator = 2, 1  
 
     for _ in range(n):  
 
         yield numerator / denominator  
 
         numerator, denominator = numerator + denominator, numerator  
 
   
 
 def sum_fractions(n):  
 
     return sum(fraction_generator(n))  
 
   
 
 print(f"The sum of the first 20 terms is: {sum_fractions(20)}")


这两种Python方法都简洁地实现了题目要求,并展示了Python在处理此类问题时的灵活性和强大功能。


image.png


相关文章
|
异构计算
【FPGA】Verilog 编码实现:与非门 | 或非门 | 异或门 | NAND/NOR/XOR 行为验证
【FPGA】Verilog 编码实现:与非门 | 或非门 | 异或门 | NAND/NOR/XOR 行为验证
3498 0
|
SQL 存储 Java
面向 Java 程序员的 SQLite 替代品
SQLite 是轻量级数据库,适用于小微型应用,但其对外部数据源支持较弱、无存储过程等问题影响了开发效率。esProc SPL 是一个纯 Java 开发的免费开源工具,支持标准 JDBC 接口,提供丰富的数据源访问、强大的流程控制和高效的数据处理能力,尤其适合 Java 和安卓开发。SPL 代码简洁易懂,支持热切换,可大幅提高开发效率。
|
安全 Python
【Python】 已解决:(pip提示)[notice] To update, run: python.exe -m pip install --upgrade pip
【Python】 已解决:(pip提示)[notice] To update, run: python.exe -m pip install --upgrade pip
1877 0
【Python】 已解决:(pip提示)[notice] To update, run: python.exe -m pip install --upgrade pip
|
人工智能 Java 程序员
一文彻底搞定C语言的表达式和语句
本文介绍了C语言中的表达式和语句,涵盖算术、关系等表达式及各类语句的用法,帮助初学者理解核心概念。本文介绍C语言表达式(算术、关系等)和语句(表达式、复合、控制、函数、空语句),助你掌握核心概念。
1176 0
一文彻底搞定C语言的表达式和语句
|
机器学习/深度学习 人工智能 安全
安全技术身份验证(Authentication)
【8月更文挑战第10天】
1973 1
|
自然语言处理 算法
ransformers从入门到精通:常用的subword tokenizer算法
- WordPiece、BPE/BBPE最小字词进行合并最终字词,BPE/BBPE直接采用词频判断合并规则而WordPiece采用最大似然的方式 - unigram采用从最大的字词集合里移除那些对语料库整体概率贡献最小的子词【6月更文挑战第7天】
765 3
|
C语言
C语言程序设计——if与else if的区别及用法
C语言程序设计——if与else if的区别及用法
|
编解码 数据可视化 计算机视觉
一文读懂傅里叶变换处理图像的原理 !!
一文读懂傅里叶变换处理图像的原理 !!
1240 2

热门文章

最新文章