码迷,mamicode.com
首页 > 编程语言 > 详细

Python进阶内容(六)--- 函数式编程

时间:2017-10-03 13:33:24      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:cci   style   递归算法   函数式   简化   斐波那契   blog   def   递归   

 

斐波那契数列(Fibonacci)的递归与非递归实现

费波那契数列由0和1开始,之后的数就由之前的两数相加 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584,……….

递归算法

用递归算法来求值,非常好理解.伪代码:

f(n) = 0                      (n=0)
f(n) = 1                      (n=1)
f(n) = f(n-1) + f(n-2)        (n>1)

代码实现:

def f(n):
    if n==0:
        return 0
    elif n==1:
        return 1
    elif n>1:
        return f(n-1) + f(n-2)

非递归算法

def f(n):
    if n == 0:
        return 0
    if n == 1:
        return 1
    if n>1:

        prev = 1    #第n-1项的值
        p_prev = 0  #第n-2项的值
        result = 1  #第n项的值

        for i in range(1,n):
           result = prev+p_prev 
           p_prev = prev
           prev = result
        return result

Recursing 递归 最大的好处就简化代码,他可以把一个复杂的问题用很简单的代码描述出来。注意:递归的精髓是描述问题,而这正是函数式编程的精髓。

 

Python进阶内容(六)--- 函数式编程

标签:cci   style   递归算法   函数式   简化   斐波那契   blog   def   递归   

原文地址:http://www.cnblogs.com/echo1937/p/7623627.html

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