Python递归函数的定义和几个小例子

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

Python递归函数的定义和几个小例子_第1张图片

如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码

递归函数

(1)什么是递归函数?

我们都知道,一个函数可以调用其他函数。如果这个函数在内部调用它自己,那么这个函数就叫递归函数。

(2)递归函数的作用

举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * … * n

'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
#不使用递归的方法:
n=4      #求4的阶乘
result=1
i=1
while i<=4:
    result=result*i
    i+=1

print(result)

#使用递归的方法:
def test1(n):#定义函数来计算数字n的阶乘
    if n==1:
        return 1
    return n * test1(n-1)

print(test1(5))
#1在函数的内部调用自己本身
#2递归函数本质是一个方法的循环调用,注意:有可能出现死循环
#3一定要定义递归的边界(什么时候退出循环)

输出结果为:

 24
 120
 [Finished in 0.4s]

从上面两中方法的对比可以看出,递归函数的作用和循环的方法效果一样,即递归函数本质上是一个方法的循环调用,

注意:有可能会出现死循环。

因此,使用递归函数时,一定要定义递归的边界(即什么时候退出循环)。

递归函数的另一个案例是斐波纳契数列。

斐波纳契数列:1,1,2,3,5,8,13。。。(该数列中,有n个数字,从第三个数字开始:数值 =前一个数字 + 前面一个数字)

即,n=(n-2)+(n-1)

'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
def get_num(n):#获取斐波拉契数列中第n个数字的值
    if n==1 or n==2:
        return 1
    return get_num(n-1) + get_num(n-2)

#把获取的斐波拉契数字存放到列表中
nums=[]
for i in range(1,21):
    nums.append(get_num(i))#get_num获得一个斐波拉契数字

print(nums)

输出结果为:

 [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
 [Finished in 0.4s]

以上两个案例是递归函数的经典案例,需要记住其使用方法。

注意:在实际使用中,递归函数由于消耗时间比较长(相比for循环和while循环),所以很少使用。

尾语

好了,今天的分享就差不多到这里了!

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~ 更多源码、资料、素材、解答、交流 皆点击下方名片获取呀

你可能感兴趣的:(python,python,开发语言,pycharm,学习)