python 递归函数 |
您所在的位置:网站首页 › python编写递归函数求n › python 递归函数 |
递归函数
阅读: 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 点击登录后方可评论![]() 我觉得递归函数的价值:提供跟while和for 正向迭代顺序的反向的迭代顺序。 By 用户2529738582 On 2020年6月7日 13:47 回复![]() 非也,for循环与递归函数的相似度有80%多以上 多浪的河流 回复 用户2529738582 2020年12月5日 17:06 回复![]() 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 回复![]() 不错 By TheChange On 2020年1月11日 23:47 回复![]() 虽然有说递归都可以用循环实现.....但,这个评论系统拿循环能写吐了,类似的还有对某个盘的文件进行遍历.并且给出目录. 另外python的递归深度可以进行修改.递归比较影响性能. --------------分割线------------ 博主要是在增加点尾递归的介绍就好了,前两天刚研究了下这个东西....... By ywhyme On 2018年1月18日 16:44 回复![]() 多数编程语言没有针对尾递归做优化,Python解释器也没有做优化,所以。。。 海上有个树荫_hhh 回复 ywhyme 2018年3月11日 16:03 回复![]() 1 MANCHESTERfcc 回复 海上有个树荫_hhh 2019年10月18日 10:41 回复![]() 2 MANCHESTERfcc 回复 MANCHESTERfcc 2019年10月18日 10:42 回复![]() 3 MANCHESTERfcc 回复 MANCHESTERfcc 2019年10月18日 10:42 回复![]() 4 MANCHESTERfcc 回复 MANCHESTERfcc 2019年10月18日 10:42 回复![]() 牛 MANCHESTERfcc 回复 MANCHESTERfcc 2019年10月18日 10:42 回复![]() 哈哈,厉害 多浪的河流 回复 MANCHESTERfcc 2020年12月5日 17:07 回复![]() 牛啊牛啊 黄驰Vince 回复 多浪的河流 2023年5月5日 23:42 回复 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |