python 递归函数

您所在的位置:网站首页 python编写递归函数求n python 递归函数

python 递归函数

2024-01-08 00:57| 来源: 网络整理| 查看: 265

递归函数 阅读: 37786     评论:13

我们在前面的章节中,很多次的看到了在函数中调用别的函数的情况。如果一个函数在内部调用了自身,这个函数就被称为递归函数。

What?函数可以自己调用自己?那不是成为了“衔尾蛇”?会不会进入死循环,永远退出不了?我们先看一个例子,典型的高斯求和问题,1+2+3+4+…+99+100,不使用递归的话,我们可以用循环,这么做:

def sum_number(n): total = 0 for i in range(1, n+1): total += i return total sum_number(100)

但如果使用递归函数来写,是这样的:

def sum_number(n): if n 0: # 如果有子评论的话,就递归查找下去,否则回退 get_comment(child_comments) get_comment(all_top_comments)

本博客的评论系统就是这么写的。

使用递归函数需要注意防止递归深度溢出,在Python中,通常情况下,这个深度是1000层,超过将抛出异常。在计算机中,函数递归调用是通过栈(stack)这种数据结构实现的,每当进入一个递归时,栈就会加一层,每当函数返回一次,栈就会减一层。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

 range()函数 匿名函数  评论总数: 13 点击登录后方可评论 user_image

我觉得递归函数的价值:提供跟while和for 正向迭代顺序的反向的迭代顺序。

By   用户2529738582    On   2020年6月7日 13:47   回复 user_image

非也,for循环与递归函数的相似度有80%多以上

多浪的河流   回复   用户2529738582 2020年12月5日 17:06   回复 user_image

def sum_number(n): total = 0 for i in range(1, n+1): total += i return total result = sum_number(100) print(result)

By   Kay-令狐冲厕所    On   2020年5月19日 20:10   回复 user_image

不错

By   TheChange    On   2020年1月11日 23:47   回复 user_image

虽然有说递归都可以用循环实现.....但,这个评论系统拿循环能写吐了,类似的还有对某个盘的文件进行遍历.并且给出目录. 另外python的递归深度可以进行修改.递归比较影响性能. --------------分割线------------ 博主要是在增加点尾递归的介绍就好了,前两天刚研究了下这个东西.......

By   ywhyme    On   2018年1月18日 16:44   回复 user_image

多数编程语言没有针对尾递归做优化,Python解释器也没有做优化,所以。。。

海上有个树荫_hhh   回复   ywhyme 2018年3月11日 16:03   回复 user_image

1

MANCHESTERfcc   回复   海上有个树荫_hhh 2019年10月18日 10:41   回复 user_image

2

MANCHESTERfcc   回复   MANCHESTERfcc 2019年10月18日 10:42   回复 user_image

3

MANCHESTERfcc   回复   MANCHESTERfcc 2019年10月18日 10:42   回复 user_image

4

MANCHESTERfcc   回复   MANCHESTERfcc 2019年10月18日 10:42   回复 user_image

MANCHESTERfcc   回复   MANCHESTERfcc 2019年10月18日 10:42   回复 user_image

哈哈,厉害

多浪的河流   回复   MANCHESTERfcc 2020年12月5日 17:07   回复 user_image

牛啊牛啊

黄驰Vince   回复   多浪的河流 2023年5月5日 23:42   回复


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3