斐波那契数列实现C与python版

头歌操作系统 课堂练习4.2:页式内存管理 答案 无解析 阅读详情

Fibonacci数列:

  • 就是前两个数为1, 从第三个数字开始,该数字是前两个数字得和。

c语言实现

  • 很简单,就是设置三个变量,依次循环,第三个变量等于前两个变量的和。
// c语言实现斐波那契数列:计算第n个斐波那契数的值
#include<stdio.h>
int main()
{
	int n;
	long int f1=1, f2=1, f3;
	printf("请输入想要的斐波那契数(n>=3):\n");
	scanf("%d", &n);
	
	for(int i = 1; i <=n - 2 ; i++)
	{
		f3 = f1 + f2;
		printf("%12d\n", f3);
		f1 = f2;
		f2 = f3;
	}

	return 0;
}

(补充)C语言利用数组实现,可选择输出第几个斐波那契数

#include<stdio.h>
int main()
{
	// 默认创建30个长度
	int m;
	int f[30]={1,1};
	while(true)
	{
		for(int i=2; i<30; i++)
			f[i] = f[i-1] + f[i-2];

		printf("请输出要获取的:\n");
		scanf("%d", &m);
		if (m <= 30 && m > 0)
			printf("%d\n", f[m - 1]);
		else
			printf("请输入30以内的数字序号\n");
	}
	return 0;
}

python实现(迭代器)

# 官方文档介绍:点击进入

迭代器:

  • 我所理解的迭代器,就是普通的类,实现了 __iter 和 __next 方法。也就是完成这一协议(类中定义有这两个方法,就称为迭代器)
class Fibonacci():
    # 起始的两个数定义为类属性
    f1 = 1
    f2 = 1    
    def __init__(self, n):
        self.n = n
        self.i = 1

    def __iter__(self):
        return self

    def __next__(self):
        # 逻辑和 C实现的逻辑一样(注意 i 定义为实例属性,才可以保存数值,一直加1)
        if self.i <= self.n:
            f3 = self.f1 + self.f2 
            self.f1 = self.f2
            self.f2 = f3
            self.i += 1
            return f3
        else:
            raise StopIteration

fi = Fibonacci(9)
fii = iter(fi)

# 两种启动方式

# (1)循环next()挨个打印,超出长度报错
for i in range(20):
    print(next(fii))

# (2)
# 在幕后,for 语句会在容器对象上调用 iter()。 
# 该函数返回一个定义了 __next__() 方法的迭代器对象,此方法将逐一访问容器中的元素。 
# 当元素用尽时,__next__() 将引发 StopIteration 异常来通知终止 for 循环
for i in fii:
    print(i)


结果:
2
3
5
8
13
21
34
55
89
Traceback (most recent call last):
  File "c:/Users/huangdonglin/Desktop/python2019资料/试题分析/python高级/python算法题/斐波那契数列.py", line 30, in <module>      
    print(next(fii))
  File "c:/Users/huangdonglin/Desktop/python2019资料/试题分析/python高级/python算法题/斐波那契数列.py", line 21, in __next__      
    raise StopIteration
StopIteration
(第一个 for next 会报错,i 循环次数,超过预定的n 值)

python实现(逆天简单的生成器)

生成器:

  • 顾名思义:生成迭代器~~~~

  • 官方介绍:

  • 生成器 是一个用于创建迭代器的简单而强大的工具。 它们的写法类似于标准的函数,但当它们要返回数据时会使用 yield 语句。 每次在生成器上调用 next() 时,它会从上次离开的位置恢复执行(它会记住上次执行语句时的所有数据值)

  • 生成器不必基于类实现, 单单类似于函数的方式即可!

def fibonacci(n):
    f1 = f2 = 1
    for i in range(n):
        f3 = f1 + f2
        f1, f2 = f2, f3
        yield f3

# 输出结果与上面一致
#(1)
for i in fibonacci(10):
    print(i)

# (2)
# 这种调用的差异是: 需要手动的去调用一下 iter方法,获取它的返回值(带有 next方法的实例)
ff = iter(fibonacci(10))
for i in range(12):  # 超出10,会报错
    print(next(ff))
  • 官方介绍:

  • 可以用生成器来完成的操作同样可以用前一节所描述的基于类的迭代器来完成。 但生成器的写法更为紧凑,因为它会自动创建 iter() 和 next() 方法。

  • 另一个关键特性在于局部变量和执行状态会在每次调用之间自动保存。 这使得该函数相比使用 self.index 和 self.data 这种实例变量的方式更易编写且更为清晰。

纯个人参考官网写法,欢迎指出问题和优化,

保姆级教程:用K210麦克风阵列模块实现声源定位(附完整Python代码与坐标计算) 本教程详细介绍了如何使用K210麦克风阵列模块实现高精度声源定位,包括硬件连接、算法解析与实战代码。通过Python代码示例,展示了从原始数据获取到三维空间坐标计算的完整流程,适用于智能家居、机器人导航等场景。 阅读详情

相关推荐

常学常新:《Attention Is All You Need》万字解读!

常学常新:《Attention Is All You Need》万字解读!

hunteritself的博客 3639

【算法】斐波那契列数的求和

前两个数之和等于第三个数,第二个数与第一个数相等,这是斐波那契数列的规则,下面用实现一下这种规则,当然,限定计算第一百个数,第一个数为1. 当然书上有这种规则的实现,但是假如要打印全部数组的话,用递归的效率很抓急,直接用数组一次遍历就ok了。 package Chacter4; public class RecursionFibonacci { public static voi

一名普通码农的菜地 2349

图形学常见概念小结

前言:本文记录《unity shader入门精要》和openGL相关学习过程中一些学习要点; 文章目录PBR流程渲染管线细分着色器的底层实现,应用原理常见的色调映射算法openGl和Direct X的区别PBR流程和URP渲染管线Camera loop(剔除)MVP矩阵变换光线追踪前向渲染和延迟渲染shader和材质的区别bloom原理后处理的理解高斯模糊实现原理图像处理中的边缘检测算子 PBR流程 小结:一套基于自然界微平面理论、能量守恒、菲涅尔反射、线性空间等的科学理论所实现的基于物理的渲染系统,包含一

小谁的博客 1163

Python 使用递归斐波那契数列

我们知道所谓的斐波那契数列就是前两个数之和等于第三个数。我们将一个类定义为一个迭代器,在这里使用迭代器两个内置函数,iter 和next,对于一个容器而言,调用iter()就得到它的迭代器,调用next() 迭代器就会返回下一个值,如果迭代器没有值可以返回了,python 会抛出一个叫StopIteration的异常。...

Shallow的博客 1802

Win10 有线网卡配置静态IP后,出现两个IPv4地址的解决方法

在我使用有线网络连接局域网时,配置了静态IP之后,发现网络并没有通,检查之后发现“以太网状态”-“网络连接详细信息”中,出现了2个IPv4的地址(一个是DHCP分配的169.254.xx.xx的IP,另一个是我配置的静态地址),但是网络是没有正常与我所配置的静态地址正常通信的。这个是我执行后的截图,重启电脑后以太网配置静态IP,恢复正常。最终我查了好多网络上的解决办法,有些办法并没有解决我的问题。这个是网上别人的问题截图,我的也是类似这种。第一种(没有解决我的问题)第二种(没有解决我的问题)

Zlz_Nike的博客 2万+

手把手教你用Qt和DSP28335实现串口Bootloader,附赠源码和避坑指南

本文详细介绍了如何使用Qt和DSP28335实现串口Bootloader,包括开发环境搭建、通信协议设计、Qt上位机开发、DSP端Bootloader核心实现以及应用程序工程的特殊配置。通过实战案例和源码分享,帮助开发者快速掌握嵌入式固件升级技术,提升工业设备远程升级的效率和可靠性。

weixin_29176179的博客 133

C语言旅途之用for循环求斐波那契数列问题

Ⅰ、用for循环求斐波那契数列问题: ①、//代码摘下直接可以运行 //斐波那契数列问题 #include<stdio.h> int main() { int t,s,a1,a2,n; s=0;a1=1;a2=1; printf(“Please input the n of Fibonacci!\n”); scanf("%d",&n); printf("%10d\n%10d\n...

狮子座的男孩 2万+

告别卡顿!OBS Studio最佳录制参数设置指南(适合游戏/网课/会议场景)

本文提供OBS Studio录制参数优化指南,针对游戏、网课及会议三大场景,详细解析帧率、码率与编码器设置。重点推荐利用硬件编码器(如NVENC)实现游戏录制零卡顿,并分享清晰稳定的网课录制与长时间会议录制配置方案,助你告别视频卡顿与音画不同步问题。

e4f5g6h7的博客 1330

斐波那契数列-第三个数是前两个数和

斐波那契数列-第三个数是前两个数和 <?php // 0 1 1 2 3 5 8 13 21 ... $shuzu=array(0,1); $d[0]=$shuzu[0]; $d[1]=$shuzu[1]; /* $d[2]=$d[0]+$d[1]; $d[3]=$d[1]+$d[2]; $d[4]=$d[2]+$d[3]; $d[5]=$d[3]+$d[4]; $d[6]=$d[4]+$d...

徊忆羽菲 3029

【物联网】探索NE555:一款经典的集成电路(超详细)

NE555是一种集成电路,其内部结构包括比较器、RS触发器、电压比较器和输出级三个主要功能模块,外部引脚则提供了与其他电路元件进行连接的接口。NE555的设计目的是为了提供一种简单方便的定时器解决方案,它广泛应用于模拟和数字电路中。NE555作为一款经典的集成电路,具备设计简单、易于使用和稳定可靠的特点,在电子领域发展了广泛的应用。从单稳态模式到多稳态模式,再到振荡器模式,NE555可以满足不同的需求,并且可以与其他电路元件灵活组合,扩展其功能。然而,需要注意的是NE555也有一些限制。

Goforyouqp的博客 6万+

FreeRTOS实战:如何避免HAL_Delay在高优先级中断中的坑(附TIM6配置指南)

本文深入剖析了在STM32 FreeRTOS项目中,于高优先级中断内调用HAL_Delay函数导致系统假死的根本原因——SysTick时基被FreeRTOS占用且优先级最低。文章提供了治本方案:通过配置TIM6作为独立且最高优先级的HAL时基,实现与FreeRTOS系统心跳的解耦,并附上详细的CubeMX配置与代码移植指南,确保系统实时性与稳定性。

weixin_29230059的博客 63

斐波那契数列——C语言

F。

weixin_63292027的博客 2万+

ROSTEA软件下载及情感分析详细操作教程(附网盘链接)

原ROST虚拟团队出品的ROST系列文本内容挖掘分析平台,是辅助人文社会科学研究的免费计算平台。该软件可以实现文本预处理、分字、分词、词性识别、特殊名词抽取、词频统计、英文词频统计、情感计算、分类算法、聚类算法等一系列文本挖掘,是人文社科研究和论文写作的一把利器。该软件用户量超过一万人,遍布海内外100多所大学,包括剑桥大学、日本北海道大学、北京大学、清华大学、香港城市大学、澳门大学等众多高校。关于ROSTCM6的安装介绍可以参考之前的文章ROSTCM6软件下载及语义网络分析详细操作教程ROST EA。

m0_64336780的博客 1万+

如何用C、C++、Java、Python、PHP、JS、GO实现斐波那契数列

一、斐波那契数列        斐波那契数列(Fibonacci Sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例而引入的。它指的是这样一个数列 如果设an为该数列的第n项(n∈N*),那么上面数列可以归结为:an=an-1+an-2显然这是一个线性递推数列。 二、代码实现        问题:现

北京麟卓 7125

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

java/C/python实现斐波那契数列

为了纪念他,人们将满足以上两个特征的数列称为斐波那契数列。斐波那契数列固定公式:f(a) = f(a-1) + f(a-2);从第 3 个数字开始,它的值是前两个数字的和;前两个数的值分别为 0 、1 或者 1、1;python实现斐波那契数列。java实现斐波那契数列。

weixin_56399522的博客 222

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

3293:【例48.1】 斐波那契数列(C、C++、python)

3293:【例48.1】 斐波那契数列(C、C++、python)

青少年趣味编程 1270

【算法练习】斐波那契数列的N种语言实现方式(C/C++/Java/Scala/Python3)

斐波那契数列描述         斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、…… 实现方式 C语言实现斐波那契数列 #include<stdio.h> int fibo1(int n) { if

我是jjking` 567

c语言斐波那契数列_Python实现斐波那契数列

斐波那契数列大家都很熟悉吧,咱们在高中学数学的时候,老师会讲这个定律以及算法,其实数据结构和数学息息相关,数学思维好的往往逻辑思维就比较好,今天小猿圈带大家学习一下python的斐波那契数列的实现。程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,费波那契数列是以递归的方法来定义:F0 ...

weixin_39707597的博客 116

c语言斐波那契数列_斐波那契数列:python实现和可视化

1 说明====1.1 斐波那契数列的介绍。1.2 斐波那契数列是上帝的指纹,大自然中随处可见,目前广泛应用到黄金分割线的布局美和股市等预测等等。1.3 斐波那契数列的python的matplotlib和turtle的可视化。1.4 本文为整理后的资料,小白易懂,适合收藏。斐波那契 - 意大利数学家-1175年-1250年;图片来自网络,如有侵权请联系,定删2 斐波那契数列===========2...

weixin_39934675的博客 927

c语言斐波那契数列_Python 实例:斐波那契数列

一次性付费进群,长期免费索取教程,没有付费教程。教程列表见微信公众号底部菜单进微信群回复公众号:微信群;QQ群:460500587微信公众号:计算机与网络安全ID:Computer-network斐波那契数列(Fibonacci sequence)又称黄金分割数列,因数学家列昂纳多·斐波那契(Leonardoda Fibonacci )以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是...

weixin_39612332的博客 221

剑指Offer - 斐波那契数列 (C/C++, Java, Python 2.x 分别实现)

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n&lt;=39思路:用数组暂存,尽量避免递归!!!注意输入0的时候应该返回0C/C++    运行时间:3ms    占用内存:488kclass Solution { public: int Fibonacci(int n) { int ans[40]; ans...

m0_38024592的博客 300

c语言斐波那契数列_python数据结构与算法——递归方法|斐波那契数列

python中定义函数功能的重要作用:将复杂的计算过程封装为一个函数存储起来,就可以避免写重复的代码。再次需要该计算的时候只需调用即可。一,递归方法:递归方法为:将问题一步步分解,直到得到可以解决的简单问题。通常涉及直接或间接条用自身:例如计算列表(1,3,5,7,9,13)中各元素的和。直接或间接调用sum()函数自身:python实现如下:In[1]def Out[2]:38斐波那契数列简介:...

weixin_39684454的博客 242

python编写程序输出斐波那契数列的前20项_C语言 写程序,输出斐波那契数列的前20项,每行输出4个数...

展开全部方法一for循环publicclassFeiBoMethod{定义三个变量方法publicstaticvoidmain(String[]args){inta=1,b=1,c=0;System.out.println("斐波那e69da5e6ba903231313335323631343130323136353331333431353933契数列前20项为:");System.out.pri...

weixin_39553653的博客 1万+

C,C++,Python三种语言实现斐波拉契数列

斐波拉契数列专题斐波拉契数列介绍输出一定范围的斐波拉契数列C实现C++实现python实现输出小于某个数的斐波拉契数列C实现C++实现python实现 斐波拉契数列介绍 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n

qq_44176343的博客 862

c语言斐波那契数列_40.细说递归之二:Python求解斐波那契数列

本篇通过青蛙跳台阶、兔子数列(斐波那契数列)问题进一步理解递归思想的魅力。 上一篇最后的题目如下: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法?归纳推理方式 不妨假设跳上n级台阶的跳法总数是 f(n),我们无法直接得知f(n)和n的关系,也即无法直接给出函数f(n)的表达式。 当我们在求解一个未知问题时,如果这个问题的通用...

weixin_39805906的博客 211

python 斐波那契数列之你不知道的神奇故事

斐波那契数列(兔子数列)奇怪的名字怎么样能够用编程进行编写?来来来我们一起看看

三岁学编程的博客 736

python中斐波那契数列_斐波那契数列–在Python,JavaScript,C ++,Java和Swift中进行了解释...

python中斐波那契数列by Pau Pavón 通过保罗·帕文(PauPavón) The Fibonacci sequence is, by definition, the integer sequence in which every number after the first two is the sum of the two preceding numbers. To simpli...

cumi7754的博客 459
上一篇: 素数判定C语言与python
下一篇: 翻译密码(简单的 大小写英文字母后移四位,其他字符不变)C语言与Python版本
我是py呀
博客等级 码龄8年 205粉丝 130原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值