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

Python中的函数递归思想,以及对比迭代和递归解决Fibonacci数列

时间:2017-05-23 23:43:14      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:pytho   条件   error   return   实现   程序   ==   迭代   correct   

什么是递归?简单的说就是:函数自身调用自身。

 

“普通程序员用迭代,天才程序员用递归”

 

虽然递归 在运行时会不断出栈压栈,调用底层的寄存器,造成空间上的占用以及时间上的缓慢,

但在一些算法上面仍然是递归很实用

 

但需要注意的是:

#递归是自己调用自己 很消耗时间,还会有消耗空间的危险,所以递归递归一定要知道“归去来兮”

#所谓“归去来兮”就是指递归的两个原则:
#1.调用了函数自身
#2.设置了自身正确的返回值 (必须有一个正确的返回停止条件,不能无限下去)

 

举简单的例子

 

 

下面是用迭代和递归实现的阶乘的对比:

#用循环函数实现阶乘:
def factorial(n):
    for i in range(1,n):
        n *= i
    return n

#递归版本的阶乘实现:
def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)

下面是用迭代和递归实现的Fibonacci数列的对比:

# Fibonacci 数列的递归实现:
 
 #1.用迭代的方式实现
def Fibonacci(n):
    n1 = 1
    n2 = 1
    n3 = 2
    if n < 0:
        return -1
        print(Error,please enter a correct month...)
    elif n == 1:
        return n1
    elif n == 2:
        return n2
    else:
        for i in range(3,n+1):
            n3 = n2 + n1
            n1 = n2
            n2 = n3
        return n3

 #2.用递归的方式实现
def fab(n):
    if n < 1:
        print(输入有误...)
        return -1
    elif n == 1 or n == 2:
        return 1
    else:
        return fab(n-1) + fab(n-2)
    

 

Python中的函数递归思想,以及对比迭代和递归解决Fibonacci数列

标签:pytho   条件   error   return   实现   程序   ==   迭代   correct   

原文地址:http://www.cnblogs.com/jeavenwong/p/6896576.html

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