斐波那契数列(Python)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

题目:编写一个程序,实现斐波那契数列

思路:
斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……

在数学上,费波那契数列是以递归的方法来定义:

F0 = 0 (n=0)

F1 = 1 (n=1)

F(n) = F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)

方法一:递归法

什么是递归函数?
递归是指函数可以直接或间接调用自身的一种特殊形式。如果一个函数在函数体内部调用自身,那么这个函数就是递归函数。

递归函数的两个关键要素
(1)递归基:递归函数需要停止递归的条件。

(2)递推式:将规模较大的问题分解成规模更小的同种问题,通过不断缩小问题规模,最终缩减到递归基的情形。

递归函数的优缺点
递归函数具有以下优点:

(1)代码简洁,易于理解。

(2)实现的方法符合计算机科学最基本的思想——分治思想。

但是,递归函数也有缺点:

(1)会占用更多的内存空间。

(2)效率较低,与循环结构相比可能更慢。

#递归
num = int(input('请输入数字:'))
def fibonacci(n):
    if n == 0: return 0
    if n == 1 or n == 2:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)
print('第{}个斐波那契数:{}'.format(num, fibonacci(num)))


#减少尾调
def fibonacci(num, curr=0, next=1):
    if num == 0:
        return curr
    else:
        return fibonacci(num-1, next, curr+next)

尾递归是指递归函数在最后一步调用自身。尾递归优化是一种特殊的递归调用,其所占用的栈空间最多只有常数级别。Python并没有提供针对尾递归优化的机制,但是可以手动进行优化。

缓存技术是提高计算机程序性能的一种常见手段,Python中也可以使用缓存技术优化斐波那契数列的递归函数。通过字典将已经计算过的数列项进行缓存,下次调用读取缓存即可,极大地提高了函数的执行效率。

代码如下所示:

cache = {}

def fibonacci(num):
    if num in cache:
        return cache[num]
    elif num == 0:
        return 0
    elif num == 1:
        return 1
    else:
        result = fibonacci(num - 1) + fibonacci(num - 2)
        cache[num] = result
        return result
方法二:循环调用法
#for循环:
num = int(input('请输入数字:'))
def fibonacci(n):
    a, b = 1, 1
    for j in range(n - 1):			# ♻️
        a, b = b, a + b
    return a
print('第{}个斐波那契数:{}'.format(num, fibonacci(num)))

Python斐波那契数列前n 源码如下: # fibo.py def fibo(n): a, b = 0, 1 for i in range(n): print(a,end='\t') a,b = b, a + b n = eval(input("输入个整数:")) print('斐波那契前n'.center(20,'-')) fibo(n) 运行结果: 关键代码也就两三行 ... 阅读详情

相关推荐

python实现斐波那契数列打印

1斐波那契数列定义斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样数列112、3、5、8、13、21、34、……在数学上,数列以如下被以递归的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n&gt...

XiaoHai的博客 7366

python数列编程_Python 入门经典100实例:实例6 斐波那契数列

题目:斐波那契数列。程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样数列:0112、3、5、8、13、21、34、……。在数学上,费数列是以递归的方法定义:F0=0(n=0)F1=1(n=1)Fn=F[n-1]+F[n-2](n=>2)方法输出指定数字斐波那契数列列表:deffib(n):ifn...

weixin_31653971的博客 1213

最强黄金分割尺+ 斐波那契周期主图指标通达信指标公式源码.doc

最强黄金分割尺+ 斐波那契周期主图指标通达信指标公式源码.doc

c# 斐波那契数列

根据斐波那契数列定义可知,需要已知第1个和第2个元素才能出后面的元素,所以先定义。根据提示,在右侧编辑器补充代码,计算并输出斐波那契数列前。表示的不仅仅是第1个和第2个元素,随着循环的进行。本关任务:编写个程序,计算斐波那契数列前。,然后在循环中先计算。

2302_80547909的博客 439

斐波那契数列(各种代码实现斐波那契数列)

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样数列112、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推方法定义:F(0)=0,F(1)=1,F(n)=F(n - 1)+F(n - 2)(n 2,n N*)在现代物理、准晶体结构、化学等领域,数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《...

酷爱前端的小陈博客 7838

python练习实例(二)

目录1斐波那契数列2、输出 9*9 乘法口诀表。3、暂停秒输出,并格式化当前时间4、经典问题:不死神兔5、判断101-200之间有多少个素数,并输出所有素数。 1斐波那契数列 程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样数列0112、3、5、8、13、21、34、……。 在数学上,费数列是以递归的方法定义: F0 = 0 (n=0) F1 = 1 (n=1) Fn = F[n-1] + F[n-2] (n=>2)

小王的博客 1039

斐波那契数列的两种解法(python代码)

斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样数列0112、3、5、8、13、21、34、……。

weixin_43394825的博客 405

Python斐波那契数列的四种写法

在这些时候,我可以附和着笑,目经理是决不责备的。而且目经理见了孔乙己,也每每这样问他,引人发笑。孔乙己自己知道不能和他们谈天,便只好向新人说话。有回对我说道,“你学过数据结构吗?”我略略点点头。他说,“学过数据结构,……我便考你考。斐波那契数列Python怎样写的?”我想,讨饭样的人,也配考我么?便回过脸去,不再理会。孔乙己等了许久,很恳切的说道,“不能写罢?……我教给你,记着!这些字应该记着。将来做目经理的时候,写账要用。”我暗想我和目经理的等级还很远呢,而且我们目里也用不到斐波那契

FontTian的博客 5万+

python中使用递归实现斐波那契数列

python中使用递归实现斐波那契数列 python中使用递归实现斐波那契数列 先来了解斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样数列0112、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n 2,n N)在现代物理、

weixin_54733110的博客 10万+

使用python实现斐波那契数列的四种方法

方法实现(顺序输出) 第二种方法实现(利用python的组包拆包原理) 第三种方法实现(利用递归函数实现) 第四种方法实现(利用列表实现)

但行好事,莫问前程 3万+

Python计算斐波那契数列

文章目录1. 知识储备????2. 几种情形????2.1 第n个斐波那契数(核心❤️)2.1.1 方法:使用for循环2.1.2 方法二:使用递归2.2 前n个斐波那契2.3 大于某个数num的最小斐波那契1. 知识储备???? 斐波那契数列(Fibonacci sequence),又称黄金分割数列。因意大利数学家Leonardo Fibonacci以兔子繁殖为例子而引入,故又称为“兔子数列” 指的是这样数列112、3、5、8、13、21、34、…… 在数学上,斐波那契数列被以

林大夕可的博客 1万+

Python入门经典题斐波那契数列

Python入门经典题斐波那契数列 斐波那契数列: 以下是前15斐波那契数列1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 … 这个数列从第3开始,每都等于前两之和 如果设F(n)为该数列的第n(nN*),那么这句...

王涛涛的博客 9144

python输出斐波那契数列_Python实现斐波那契数列

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

weixin_39875842的博客 3061

python斐波那契数列计算_python计算斐波那契数列

斐波那契数列就是黄金分割数列加第二等于第三,以此类推第二加第三等于第四代码如下这段代码实现fib(n)函数返回第n,PrintFN(m,n,i)函数实现输出第i斐波那契数列,输出在m到n之间的斐波那契数的数量def fib(n) :x = 0x1 = 1x2 = 1i = 2while i = m and fib(i) ...

weixin_39701834的博客 2705

python实现斐波那契数列的5种简单方法_python实现斐波那契数列

斐波那契数列即著名的兔子数列112、3、5、8、13、21、34、……112,3,5,8,13比如这样个兔子的对列,第三个数是前两个数之和。让写方法,比如让你随机输入个数字,把它前面的两个数打印出来def fib_num(n):a=0b=1lis=[]while b...

weixin_39946534的博客 6096

python输出斐波那契数列_详解python输出斐波那契数列

这篇文章详解python输出斐波那契数列def recur_fibo(n):"""递归函数输出斐波那契数列"""if n

weixin_39870155的博客 2111

python输出斐波那契数列的前20_python输出斐波那契数列

如何用Python输出个Fibonacci数列有时候觉得自己像个神经病。既纠结了自己,又打扰了别人。#python3def fibo(n): if n受辱时的唯办法就是忽视它,不能忽视它,就藐视它,如果能藐视它也不能,你就只有受辱了。用Python输出斐波那契数列的前20,要用递归和非斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leo...

weixin_39581739的博客 1万+

Python实现斐波那契数列

了解斐波那契数列的视频 斐波那契数列介绍 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样数列112、3、5、8、13、21、34、……在数学上,数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F...

在路上 1万+
上一篇: 猜数字游戏(Python)
下一篇: 绘制一个五角红星图形(Python)
greatau
博客等级 码龄10年 34粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值