首页 > 聚焦 > > 正文

Algorithm_01--C#递归算法

时间:2023-05-23 19:08:55 来源:博客园

///递归算法本质: ///1、方法的自我调用 ///2、有明确的终止条件 ///3、每次调用时,问题规模在不断减少。通过递减,最终到达终止条件


【资料图】

问题:程序在输入1000后(即1到1000的和),程序会出现异常。

解答:百度后得出结论,栈溢出异常。

1、递归方法在每次调用自身时,都会生成一个新的栈帧并压入调用栈。

2、对于计算1到100的和,递归深度是100层,这还在大多数的编程语言栈的大小范围内。

3、对于1到1000的和,递归深度为1000层,这通常会超过编程语言栈的大小限制,从而导致栈溢出。

4、C#中默认栈大小是1MB,可以通过修改配置文件app.config来增大,但是也会带来内存占用过高的问题。

5、所以递归深度过大时,应该避免使用递归方法,而使用迭代算法,对于这个问题可以使用for循环迭代计算。

延申:

大多数编程语言的默认栈大小都在1MB以上,可以支持1000层以内的递归调用。像C#的默认栈是1MB,Java是512KB,Python是10MB等。当递归深度在1000层以内时,占用的栈空间还在可控范围内,不会导致内存占用过高的问题。3. 对于简单的算法逻辑,递归深度1000层以内的递归代码还比较清晰简洁,易于理解。如果使用迭代重写,代码的可读性会差一些。

总结:大概递归深度过大的,就不要考虑使用递归来计算了。

关键词:
x 广告
5月11日15时至12日15时,北京新增本土新冠肺炎病毒感染者36例

  中新网北京5月12日电(记者 杜燕)北京市疾病预防控制中心副主任、全国新型冠状病毒肺炎专家组成员庞星火在12日召开的北京市新冠肺炎疫

通讯:范长江侄女范家敏:“伯伯为全家带来新闻力量”

  中新网巴彦淖尔5月12日电 题:范长江侄女范家敏:“伯伯为全家带来新闻力量”  中新网记者 李爱平  50岁的范家敏人生中的“骄傲

四川广安新增无症状感染者25例 2000余名医务人员支援邻水

  (抗击新冠肺炎)四川广安新增无症状感染者25例 2000余名医务人员支援邻水  中新网成都5月12日电(王爵 王林)12日上午,四川广安市召

国际护士节拳拳之心战疫情:小桌子,大责任

  中新网西宁5月12日电 题:国际护士节拳拳之心战疫情:小桌子,大责任  中新网记者 张添福  5月8日,是母亲节。在青海,恰是很多

京杭大运河全线通水 入河北省南运河水量近1.5亿立方米

  中新社石家庄5月12日电 (李晓伟 任树春 吕培)据河北省水利厅12日消息,4月28日,京杭大运河实现近一个世纪以来首次全线通水,截至5

广东暴雨天气将持续 需继续做好防御

  中新网广州5月12日电 (记者 王坚)广东省气象局12日发布消息称,10日到12日早晨,该省大部分市县先后出现了暴雨到大暴雨局地特大暴雨

x 广告

Copyright   2015-2022 时代评测网版权所有   备案号:   联系邮箱: 514 676 113@qq.com