斐波那契数列的递归和for实现
今天在QQ学习群聊天,聊到递归,让我返回重学习了一把。
聊天勾起我复习递归
一个学伴儿聊到一段代码:
👀
疑惑为什么后面有“321”输出。
我加入调试文字后,还是疑惑。🥴
大佬解惑
递归复习
代码试炼
用递归输出数列第40项都难,第50项卡死。而for,即使第10000项输出,也是立即显现。
递归实现代码
def fib(n): #递归实现
if n==0:
return 0
elif n==1:
return 1
else:
return fib(n-1)+fib(n-2) #数列第三项是前两项的和。
For实现代码
def fib_for(n):
fib = [0, 1] #初始化斐波那契数列前两项。
for i in range(2, n+1): #生成第二项到第n项。
fib.append(fib[i-1]+fib[i-2]) #数列第三项是前两项的和。
return fib #返回到第n项的整个数列。
python完整代码
(如果从语句注释不能清楚作用,请评论区留言指教和探讨。🤝)
# coding: utf-8
'''斐波那契数列的递归实现和for实现'''
def fib(n): #递归实现
if n==0:
return 0
elif n==1:
return 1
else:
return fib(n-1)+fib(n-2) #数列第三项是前两项的和。
def fib_for(n): #for实现
fib = [0, 1] #初始化斐波那契数列前两项。
for i in range(2, n+1): #生成第二项到第n项。
fib.append(fib[i-1]+fib[i-2]) #数列第三项是前两项的和。
return fib #返回到第n项的整个数列。
n = 10
s = f'斐波那契数列第{n}项'
blank = ' '
input(f'\n\n{s:.^33}\n\n{blank:8}递归实现:{fib(n)}\n\n{blank:8}For实现:{fib_for(n)[-1]}\n\nFor实现的到{n}项的数列:\n{fib_for(n)}\n\n{"The End":.^42}\n')
无限项斐波那契数列(生成器+itertools.islice方法实现任意项输出)——(2022-1-7)
我的博文推荐:
- 排序数组中查找元素的重复起止位置(当前阅读1194)
- 柱状图中最大矩形(当前阅读1595)
- 电话拨号键盘的字母组合(当前阅读1205)
- 密码强度检测器(当前阅读1662)
- 求列表平衡点(当前阅读1694)
- 字符串统计(当前阅读1630)
- 尼姆游戏代码优化版(当前阅读815)
- 尼姆游戏(聪明版首发)(当前阅读3230)
推荐条件
点阅破千
参考文章:
上一篇: 练习:旋转链表(list.insert(0, list.pop())实现)
下一篇:
精品文章:
- OPP三大特性:封装中的property
- 通过内置对象理解python'
- 正则表达式
- python中“*”的作用
- Python 完全自学手册
- 海象运算符
- Python中的 `!=`与`is not`不同
- 学习编程的正确方法
来源:老齐教室