如何实现斐波那契数列?

1)函数实现
def get_list(a):
info = [1,1]
v1 = 1
v2 = 1
while True:
v3 = v1 + v2
if v3 > a:
break
v1 = v2
v2 = v3
info.append(v3)
return info
date = get_list(100)
print(date)
#2)递归实现
def func(a,b):
#1
#1
#2
#3
#5
#...
print(b)
if a+b<100:
func(b,a+b)
func(0,1)
PS:
在函数内部,可以调用其他函数。如果一个函数在内部调用自已本身,这个函数就叫做递归函数。上面我们写的这个代码就是递归
递归特性:
必须有一个明确的结束条件
每次进入更深一层递归时,问题规模相比上次递归都应有所减少
递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
面试题:
![](https://img2018.cnblogs.com/blog/1363327/201909/1363327-20190921194732895-1111689027.png)
count =0
num1=0
num2 =1
while num2 < 4000000:
# print(num2)
num1,num2 = num2,num1+num2
count+=1
print(num1,count)
posted @   hanfe1  阅读(247)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示