技术标签: python
斐波那契数列公式如下:
F(1)=1, n =1
F(2)=1, n =2
F(n)=F(n-1)+F(n-2)(n>=2,n∈N*),n为正整数
几种实现方法(python3实现)
1.递归法
'''
1,递归法
'''
def fib_recur(n):
assert n >0,'n应该>0'
if n == 1 or n == 2:
return 1
return(fib_recur(n-1) + fib_recur(n-2))
# test 输出前15个数
for i in range(1,16):
print(fib_recur(i))
'''
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
'''
特点:写法最简洁,但是效率最低,会出现大量的重复计算,事件复杂度O(1.618^n),而且最深度1000
2.递推法
'''
2.递推法
'''
def fib_loop(n):
assert n > 0,'n应该>0'
a, b = 0, 1
for i in range(n):
a,b = b,a+b # a=b,b=a+b,相当于temp=b,b=a+b,a=temp
return a
# 输出前15个数
for i in range(1,16):
print(fib_loop(i))
'''
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
'''
特点:时间复杂度为O(n),数据量很大时,速度会越拖越慢
3.生成器
'''
3.生成器
'''
def fib_loop_while(num):
a, b= 0, 1
while num > 0:
a, b = b,a+b
num -= 1
#print(a)
yield a
#for i in fib_loop_while(15):
# print(i)
# 或者用下面方法,next15次
c = fib_loop_while(15) # 定义生成器对象
for i in range(15):
print(c.__next__()) #python对应的为__next__,python2对应的为next方法
'''
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
'''
特点:带有yield的函数称为生成器,生成器为可迭代对象,且有__iter__和__next__方法,可遍历元素,优点是适用于大数据量情况下,效率依然不会降低
参考资料:
vue项目-day021-项目基础文件1.1-element封装/utils/element.js// 全部导入import Vue from 'vue';import element from 'element-ui';import 'element-ui/lib/theme-chalk/index.css';// 注册Vue.use(element);// 封装一个成功提示Vue.prototype.$success=function(message){ this.$
迭代子模式又叫游标(Cursor)模式,是对象的行为模式。迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(internal representation)。聚集和JAVA聚集 多个对象聚在一起形成的总体称之为聚集(Aggregate),聚集对象是能够包容一组对象的容器对象。聚集依赖于聚集结构的抽象化,具有复杂化和多样性。数组就是最基本的聚集,也是其他的JAVA聚
通常,鼠标发生停顿是鼠标的灵敏度变差,灵敏度变差是光电鼠标的常见故障,具体表现为移动鼠标时,光标反应迟钝,不听指挥。这种硬件故障建议就是马上换个新的鼠标。不过,最好是通过以下的故障原因排除来验证,鼠标停顿到底是哪里出了毛病!第一,确保你的鼠标是好的。可以换到其他电脑上试试。测试下是否鼠标的插口接触不了导致的。第二,重装显卡或者声卡的驱动程序。第三,杀毒。第四,软件冲
最近在搞一个项目,其中一个功能是要求将数据保存在STM32的片上Flash,并能够在程序运行时将Flash内的数据读取出来放入RAM中的对应位置,便于设备其他功能对这些不可失数据进行读取、使用。自己瞎搞Flash地址,导致自己搬石头砸自己的脚,还多次进HardFault_Handle,别问为什么,问就是访问量非法地址。
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script src="aa.js"></script>
Kevin Mitnick的TCP序列号预测攻击原理TCP/IP协议栈的设计和利用还是让我觉得太炫酷了!! 环境分析涉及到四台机器:攻击者:Mitnick受害者:Shimomura中间被利用者:Remote测试ISN算法机器:Tester 攻击入口被攻击机器S与远程服务器R之间,R可以通过在TCP 513 端口运行rlogin访问S。其中rlogin使用不安全的认证方式:基于源IP
此文并不是介绍项目的性能的如何优化,而是介绍本人在工作中总结出来的一些开发经验,旨在通过改善开发习惯,来提升工作效率。东北人有个词儿特别有意思,叫埋汰。哈哈,不知道诸位老铁们有没有听你们身边的朋友说过。生活上,我们肯定是不想让别人嫌弃我们埋汰。同样,我们的项目也不应该“埋汰”。制定一个优秀的项目结构,不仅能让我们自己看的舒服,在日常的代码维护也能够给我提供极大的便利。所以,工作中总结了一些前端...
visualgdb 设置环境变量 LD_LIBRARY_PATH
一.主要功能利用Vue和bootstrap来实现一个设备管理系统,主要功能为:1.增加产品的信息(包括产品名称,产品价格,生产厂家和产品数量)2.删除某一条产品信息(在点击删除时会弹出警示框)3.点击全部删除按钮,会将已经录入的产品全部删除二.代码实现1.首先引入bootstrap中的框架,对整体进行布局(到官网直接引用后更改文字描述即可)2.设置添加按钮,绑定add()add(){ this.equipments.push(this.newEqu
有个网友写信给我谈到关于PHP计算工资问题。我以前一篇文章中谈到过一种计算工资的方法,不过是偷巧,利用现有的表达式的工具,现在既然有人想要,我就给出一个逆波兰的算法。 我们的目标是实现如下的计算公式: 假设有一个计算公式如下: $expression = "(F1*F12+10.34)"; 其中的变量值如下: $expression_value = Array('F1'=>10, 'F12'...
尚硅谷_Java零基础教程-java入门必备-初学者基从入门到精通全套完整版(宋红康主讲)P498文章目录枚举类自定义枚举类enum关键字定义枚举类Enum类中的常用方法注解Annotation概述注解示例三个基本注解的使用自定义注解JDK中的元注解通过反射获取注解JDK8中注解的新特性可重复注解类型注解枚举类类的对象只有有限个,确定的。星期、性别、状态当需要定义一组常量时,强烈建议使用枚举类。自定义枚举类声明Season对象的属性:private final修饰私有化类的构造器
1、什么是请求转发和重定向?请求转发:request.getRequestDispatcher(String path).forward(requst,response);重定向response.sendRedirect(String path);简单来说,请求转发是服务端内部做的事情,和客户端无关,客户端也无感知;而重定向是客户端请求服务端,服务端重定向,客户端在发起二次请求才能拿到结果。2、请求转发和重定向的区别1、重定向是response发起,请求转发是request发