python基础练习题(斐波那契数列)
day4
---------------------------------------------------------------
实例006:斐波那契数列
题目 斐波那契数列。
题目没说清楚,大概说的是输出制定长度的数列吧,想了想实现如下:
 1 a = int(input("请输入斐波那契数列位数:"))
 2 list = []
 3 for i in range(a):
 4     if i <2:
 5         list.append(i)
 6     else:
 7         list.append(list[i-2]+list[i-1])
 8         if len(list)==a:
 9             print(list)
10             break
看了代码量也还行,下面看看标准答案:
1 def Fib(n):
2 Fibona = [0,1]
3 if n>1:
4 [Fibona.append(Fibona[i-1]+Fibona[i-2]) for i in range(2,n)]
5 return Fibona
6 n = int(input("请输入需要的斐波那契数列长度n:"))
7 print(Fib(n)[0:n])
标准答案用了列表推导式,确实比我的好理解,代码也精简。。。,再来一个经典的:
1 fibs = [0,1]
2 num = int(input("请输入需要的斐波那契数列长度: "))
3 for i in range(num-2):
4 fibs.append(fibs[-2]+fibs[-1])
5 print(fibs)
很惊艳,很巧妙吧,最后看看递归的:
1 def recur_fibo(n):
2 if n <= 1:
3 return n
4 else:
5 return (recur_fibo(n - 1) + recur_fibo(n - 2))
6 nterms = int(input("您要输出几项? "))
7 list = []
8 for i in range(nterms):
9 list.append(recur_fibo(i))
10 print(list)
从网上的资料来看,递归的性能比不上循环的,但是看起来很方便,递归一般存在以下特点(python的递归最大深度是1000):
1、必须有一个明确的结束条件
2、每次进入更深一层递归时,问题规模(计算量)相比上次递归都应有所减少
3、递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
python基础练习题(斐波那契数列)的更多相关文章
- python基础练习 斐波那契数列
		转载于知乎刘奕聪的方法 一 f = [1, 1]print([f.append((f[-1] + f[-2])) or f.pop(0) for i in range(100)]) /// f.ap ... 
- Python与Go斐波那契数列
		#!/usr/bin/env python # -*- coding: utf-8 -*- # 斐波那契数列 def fibonacci_sequence(num): aa = 0 b = 1 li ... 
- python练习:斐波那契数列的递归实现
		python练习:斐波那契数列的递归实现 重难点:递归的是实现 def fib(n): if n==0 or n==1: return 1 else: return fib(n-1)+fib(n-2) ... 
- 如何使用Python输出一个[斐波那契数列]
		如何使用Python输出一个[斐波那契数列]Fibonacci 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonac ... 
- Python递归及斐波那契数列
		递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可 ... 
- Python 实现 动态规划 /斐波那契数列
		1.斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数 ... 
- Python递归函数与斐波那契数列
		定义:在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 阶乘实例 n = int(input(">>:")) def f(n): s ... 
- Python练习笔记——斐波那契数列
		斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一 ... 
- Python生成器实现斐波那契数列
		比如,斐波那契数列:1,1,2,3,5,8,13,21,34.... 用列表生成式写不出来,但是我们可以用函数把它打印出来: def fib(number): n, a, b = 0, 0, 1 wh ... 
- 用Python来实现斐波那契数列.
		1).递归 def fib_recur(n): assert n >= 0, "n > 0" if n <= 1: return n return fib_rec ... 
随机推荐
- 除了增删改查你对MySQL还了解多少?
			目录 除了增删改查你对MySQL还了解多少? MySQL授权远程连接 创建用户.授权 客户端与服务器连接的过程 TCP/IP 命名管道和共享内存 Unix域套接字文件 查询优化 MySQL中走与不走索 ... 
- 【Vulnhub】LazySysAdmin
			下载链接 https://download.vulnhub.com/lazysysadmin/Lazysysadmin.zip 运行环境 Virtualbox Vnware Workstation p ... 
- DC-2
			环境搭建 下载地址: https://download.vulnhub.com/dc/DC-2.zip.torrent 从描述中得知有5个flag. 下载好后导入虚拟机 修改网络配置为NAT 探测靶机 ... 
- 3、Lambda表达式
			Lambda表达式 Lambda表达式(lambda expression),是一种匿名函数,即没有函数名的函数. Lambda表达式不仅在C#中使用,在Java.Phtyon.C++ 中都有使用. ... 
- Python tkinter库将matplotlib图表显示在GUI窗口上,并实时更新刷新数据
			代码 1 ''' 2 使用matplotlib创建图表,并显示在tk窗口 3 ''' 4 import matplotlib.pyplot as plt 5 from matplotlib.pylab ... 
- Zookeeper 文件系统 ?
			Zookeeper 提供一个多层级的节点命名空间(节点称为 znode).与文件系统不 同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放 数据而目录节点不行. Zookeeper ... 
- ZooKeeper 面试题?
			ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群 中各个节点的状态根据节点提交的反馈进行下一步合理操作.最终,将简单易用 的接口和性能高效.功能稳定的系统提供给用户. ... 
- switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?
			答:在Java 5以前,switch(expr)中,expr只能是byte.short.char.int.从Java 5开始,Java中引入了枚举类型,expr也可以是enum类型,从Java 7开始 ... 
- Web,RESTful API 在微服务中的作用是什么?
			微服务架构基于一个概念,其中所有服务应该能够彼此交互以构建业务功能.因 此,要实现这一点,每个微服务必须具有接口.这使得 Web API 成为微服务的一 个非常重要的推动者.RESTful API 基 ... 
- ConcurrentHashMap 的并发度是什么 ?
			ConcurrentHashMap 的并发度就是 segment 的大小,默认为 16,这意味着最多同时可以有 16 条线程操作 ConcurrentHashMap,这也是ConcurrentHash ... 
