fibonacci数列的Python表示方法

本文介绍了三种不同的方式来生成斐波那契数列:递归方法、非递归方法以及使用generator的方式。每种方法都提供了完整的Python代码示例,并详细解释了其工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Fibonacci数列为:0、1、1、2、3、5、8、13、21......

数列第一项为0,第二项为1,从第三项开始,每一项为相邻前两项之和。

用递归的方法来定义:

  • F(0) = 0 
  • F(1) = 1
  • F(n) = F(n-1) + F(n-2) , n>=2

用递归方法实现代码:

[python]  view plain  copy
  1. # python 3.4  
  2. x = int ( input ("输入一个数:") )  
  3. def fibonacci ( n ) :  
  4.     if n == 0 :   
  5.         return 0  
  6.     elif n == 1 :  
  7.         return 1  
  8.     else :  
  9.         return fibonacci( n - 1 ) + fibonacci( n - 2 )  
  10. for i in range ( 0 , x ) :  
  11.     print(fibonacci(i))  

用非递归方法实现代码: 

[python]  view plain  copy
  1. # python 3.4  
  2. x = int ( input ("输入一个数:") )  
  3. a, b = 0, 1  
  4. for i in range(0 , x ):        
  5.     print (a)
  6.     a, b = b, a + b


使用generator实现代码: 

[python]  view plain  copy
  1. # python 3.4  
  2. x = int ( input ("输入一个数:") )  
  3. def fib():
  4.     a, b = 0, 1  
  5.     for i in range(0 , x ):        
  6.         yield a
  7.         a, b = b, a + b
  8. print( list(fib(x) )

使用itertools + generator 实现代码
import itertools as it

num_iterations = int(raw_input('How many? '))
def fib():
    a,b = 0,1
    while True:
        yield a
        b = a+b
        yield b
        a = a+b

for x in it.islice(fib(), num_iterations):
    print x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值