码迷,mamicode.com
首页 > 其他好文 > 详细

非递归实现斐波拉契函数

时间:2018-04-08 18:09:14      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:方法   保存   gui   cci   elf   sel   code   coding   AC   

以下用递归和非递归实现斐波拉契函数,查看两种方法需要的时间。

# -*- coding:utf-8 -*-
import datetime
class Solution:
    ‘‘‘
    要想非递归实现斐波拉契函数,只要保存f(n-2)、f(n-1)就可以,将其存入list中。
    当n=2时,只需要把list中的两个数相加一次即可,同时将相加的数存入list[1],将
    原来的list[1]存入list[0]中。
    ‘‘‘
    def __init__(self):
        self.list=[0,1]

    def Fibonacci(self, n):
        if n==0:
            return 0
        elif n==1:
            return 1
        else:
            n-=1
            while n:
                temp=self.list[1]
                self.list[1] = self.list[0] + self.list[1]
                self.list[0]=temp
                n-=1
            return self.list[1]

class Solution_digui:

    def Fibonacci(self, n):
        if n==0:
            return 0
        elif n==1:
            return 1
        else:
            return self.Fibonacci(n-2)+self.Fibonacci(n-1)

i=datetime.datetime.now()
print Solution().Fibonacci(39)
j=datetime.datetime.now()
print j-i
print Solution_digui().Fibonacci(39)
k=datetime.datetime.now()
print k-j

输出:

63245986
0:00:00
63245986
0:00:40.448000

可以发现,非递归实现不到1秒,递归实现需要40多秒

非递归实现斐波拉契函数

标签:方法   保存   gui   cci   elf   sel   code   coding   AC   

原文地址:https://www.cnblogs.com/ybf-yyj/p/8745897.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!