递归和循环---斐波那契数列

题目描述:

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=36

思路:

斐波那契数列的定义:
f(0) = 0,f(1) = 1,f(n) = f(n-1) + f(n-2)

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。

python 递归实现;

// An highlighted block
# 递归
def Fibonacci_Recursion_tool(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return Fibonacci_Recursion_tool(n - 1) + Fibonacci_Recursion_tool(n - 2)


def Fibonacci_Recursion(n):
    result_list = []
    for i in range(1, n + 1): result_list.append(Fibonacci_Recursion_tool(i))
    return result_list
--------------------- 

原文:https://blog.csdn.net/FontThrone/article/details/78429771 
在代码中,对于第n个斐波那契数列我们采用递归生成.而对于获取list形式的斐波那契数列我们则采取for循环获取.

Python循环实现:

// An highlighted block
def Fibonacci_Loop_tool(n):
    a, b = 0, 1
    while n > 0:
        a, b = b, a + b
        n -= 1


def Fibonacci_Loop(n):
    result_list = []
    a, b = 0, 1
    while n > 0:
        result_list.append(b)
        a, b = b, a + b
        n -= 1
    return result_list
Fibonacci_Loop_tool 是获取 对应位数的类,而 Fibonacci_Loop 是获取获取数列的类.在这里比较特别的计算方式就在于,我们改从后向前的运算为从前到后,只是用a,b两个变量交替向前,这样就减少了生成数列的速度,当然如果想要生成某一个值的话,却需要从头开始计算在有些时候确实不太方便.
--------------------- 
作者:Font Tian 
来源:CSDN 
原文:https://blog.csdn.net/FontThrone/article/details/78429771 

python yield 关键字

// An highlighted block
def Fibonacci_Yield_tool(n):
    a, b = 0, 1
    while n > 0:
        yield b
        a, b = b, a + b
        n -= 1


def Fibonacci_Yield(n):

    return list(Fibonacci_Yield_tool(n))
原文:https://blog.csdn.net/FontThrone/article/details/78429771 

使用递归的思路

// An highlighted block
# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        # write code here
        if n == 0:
            return 0
        elif n ==1:
            return 1
        numfn1 =0
        numfn2 =1
        for i in range(2,n+1):
            currentNum = numfn1+numfn2
            numfn1 = numfn2
            numfn2 = currentNum
            
        return currentNum
    if __name__ == "__main__":
        print Fibonacci(6)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值