有一分数序列: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


相关文章
|
Windows
Windows下CMD中文乱码问题解决方法,设置代码页65001后仍然乱码
原文地址: http://blog.csdn.net/u011250882/article/details/48136883 在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。  如果想正确显示UTF-8
13513 0
|
3月前
|
Ubuntu Linux 网络安全
Linux装软件神器:yum 超详细入门指南
在Linux中安装软件有三种常用方法:源码安装、rpm包安装和yum包管理器安装。其中,**yum**(或Ubuntu的apt)最为便捷,类似于手机应用商店,能自动解决依赖问题,适合新手使用。本文详细介绍了yum的工作原理、软件源配置、常用命令及生态系统的意义,帮助用户快速上手Linux软件安装与管理。
 Linux装软件神器:yum 超详细入门指南
|
8月前
|
数据可视化 测试技术 数据处理
自定义函数:为接口开发增添灵活性 - Apipost 的独特优势
Apipost 的自定义函数功能为接口开发带来了灵活性与效率,支持内置函数(如 `md5`、`sha`、`base64` 等)和自定义扩展,满足复杂业务需求。相比 Apifox 的局限性,Apipost 可轻松实现数据加密、格式化等操作,例如对用户密码或银行卡号进行多层加密处理。实际案例中,某金融科技公司利用 Apipost 自定义函数实现了数据安全与合规要求,大幅提高开发效率。通过透明化、生态化和智能化的参数处理,Apipost 成为高效接口开发的理想工具。
|
SQL 存储 Java
面向 Java 程序员的 SQLite 替代品
SQLite 是轻量级数据库,适用于小微型应用,但其对外部数据源支持较弱、无存储过程等问题影响了开发效率。esProc SPL 是一个纯 Java 开发的免费开源工具,支持标准 JDBC 接口,提供丰富的数据源访问、强大的流程控制和高效的数据处理能力,尤其适合 Java 和安卓开发。SPL 代码简洁易懂,支持热切换,可大幅提高开发效率。
|
前端开发 JavaScript 网络协议
怎么制作一个网站?怎样自己做网站
怎么制作一个网站?怎样自己做网站
|
10月前
|
人工智能 Java 程序员
一文彻底搞定C语言的表达式和语句
本文介绍了C语言中的表达式和语句,涵盖算术、关系等表达式及各类语句的用法,帮助初学者理解核心概念。本文介绍C语言表达式(算术、关系等)和语句(表达式、复合、控制、函数、空语句),助你掌握核心概念。
756 0
一文彻底搞定C语言的表达式和语句
|
异构计算
【FPGA】Verilog 编码实现:与非门 | 或非门 | 异或门 | NAND/NOR/XOR 行为验证
【FPGA】Verilog 编码实现:与非门 | 或非门 | 异或门 | NAND/NOR/XOR 行为验证
2686 0
|
安全 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
1495 0
【Python】 已解决:(pip提示)[notice] To update, run: python.exe -m pip install --upgrade pip
|
自然语言处理 算法
ransformers从入门到精通:常用的subword tokenizer算法
- WordPiece、BPE/BBPE最小字词进行合并最终字词,BPE/BBPE直接采用词频判断合并规则而WordPiece采用最大似然的方式 - unigram采用从最大的字词集合里移除那些对语料库整体概率贡献最小的子词【6月更文挑战第7天】
433 3