首页 > 编程语言 >Python之斐波那契数列的实现

Python之斐波那契数列的实现

时间:2022-10-11 21:03:54浏览次数:51  
标签:20 数列 Python fib1 斐波 之斐波 那契 赋值

1.斐波那契数列的概念

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、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 年起出版了以《斐波那契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

Python之斐波那契数列的实现_for循环

Python之斐波那契数列的实现_for循环_02

斐波那契数列指的是这样一个数列:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 ……这个数列从第3项开始,每一项都等于前两项之和。

试用Python代码输出斐波那契数列前20项。

2.实现方法

用Python代码输出斐波那契数列,需把握住数列的特点:从第3项开始,每一项都等于前两项之和因此我们可以使用递归、for循环等方法实现。

3.解题方法

(1)递归

def fib1(n):
if n == 1 or n == 2:
return 1
return fib1(n - 1) + fib1(n - 2)

for i in range(1, 21):
print(fib1(i), end=' ')

第1行: 定义函数fib1,传入参数n

第2-4行: 用if...else语句进行判断,由于该数列从第三项开始,每个数的值为其前两个数之和,所以当n == 1或 n == 2时,返回值为1,这也是递归的结束条件;否则返回值为前两个数的和,即fib1(n-1) +fib1(n-2)

第6行: 用for语句遍历1-20的整数

第7行: 为参数n赋值为i, 并用end 将print输出到同一行并以空格结尾

(2)for循环

def fib2(n):
a, b = 0, 1
for i in range(n + 1):
a, b = b, a + b
return a

for i in range(20):
print(fib2(i), end=' ')

第1行: 定义函数fib2,传入参数n

第2行: 为a,b分别赋值为0和1

第3行: 用for循环遍历前n项的整数

第4行: 由于该数列从第三项开始,每个数的值为其前两个数之和,可写成a, b = b, a + b。这个式子中,右边的表达式会在赋值变动之前执行,即先执行右边,如第一次循环得到b-->1,a+b --> 0+1 然后再执行赋值 a,b =1,0+1,所以执行完这条后a=1,b=1

第5行: 返回a的值

第6行: 用for语句遍历前20的整数

第7行: 为参数n赋值为i, 并用end将print输出到同一行并以空格结尾

标签:20,数列,Python,fib1,斐波,之斐波,那契,赋值
From: https://blog.51cto.com/u_15641375/5747930

相关文章

  • Python学习路程——Day12
    Python学习路程——Day12global与nonlocal'''global: 是一个内置方法,它的作用是在函数体内声明一个全局名称空间,让这个全局名称空间可以在函数体内的局部名称空间中被......
  • python基础之闭包函数与装饰器
    python基础之闭包函数与装饰器目录一、global与nonlocal二、函数名的多种用法1.可以当变量名2.可以当函数的参数3.可以当函数的返回值三、闭包函数1.闭包函数的实际应用四......
  • python重点之装饰器
    global与nonlocal函数名的多种用法闭包函数装饰器简介无参装饰器有参装饰器装饰器模板装饰器语法糖今日详细内容global与nonlocalmoney=666defind......
  • python进阶之路11 闭包函数 装饰器
    函数名的多种用法函数名其实绑定的也是一块内存地址只不过该地址里面存放的不是数据值而是一段代码函数名加括号就会找到该代码并执行1.可以当作变量名赋值defindex......
  • Python爬虫-scrapyd框架部署
    爬虫项目部署1脚本文件部署linux内置的cron进程能帮我们实现这些需求,cron搭配shell脚本,非常复杂的指令也没有问题。1.1crontab的使用crontab[-uusername]/......
  • Python基础12
    今日内容概要global与nonlocal函数名的多种用法闭包函数装饰器简介装饰器推导流程装饰器模板装饰器语法糖今日内容详细global与nonlocal'''通过global声明可......
  • 装饰器+闭包掌握(python一大重要功能)
    目录global与nonlocal函数名的多种用法闭包函数装饰器简介1.概念2.本质3.口诀4.超前知识time模块装饰器推导装饰器模板装饰器语法糖作业global与nonlocalglobal#提升......
  • 将Curl转为Python的方法
    怎样将Curl转为Python的方法作为一名后端程序员,在服务器调试的过程中,使用curl命令为我们调试接口带来了很多的方便,极大地提高了效率;如下可以实现Get请求:curl'http://ba......
  • python | scrapy
    进入某网页的步骤分为域名解析,找到域名对应的ip地址向ip地址的服务器发送请求服务器响应,返回内容(html/json浏览器解析网页内容爬虫即实现浏览器功能,通过发送请求而......
  • Python pdb模块的使用
    野路子出生,写Python也有段时间了,一般的调试都用的print,PyCharm的debug功能也用的比较少,主要一般也用不到,第二是自己也不怎么会用. 服务器开发,本地根本没有运行的环境,......