添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

如何控制递归的深度?

在递归的方法中接受一个参数,java中我用的是AtomicInteger这个类,另外需要再设置一个控制深度的变量int depth = 10,在进入递归的方法开始,把参数AtomicInteger和depth做比较,如果小于depth,就对AtomicInteger做+1操作,然后再在这个方法的结尾处对AtomicInteger做-1操作。

思路:进入方法的时候+1,结束当前方法的时候-1,这样就可以控制深度了。

转载于:https://www.cnblogs.com/andysd/p/4974923.html

原文链接: http://www.cnblogs.com/andysd/p/4974923.html I know this question has been answered already via numerous methods:Set maximum stack size (-Xss20m)Avoid the test what so ever - if you need a bigger recursion the problem is within the program.Those... 很久之前用C++写了一个Windows下 递归 搜索子文件的函数,今天正好要用,就把它改了改,顺便分享一下^ ^ 1. 递归 查找某个路径下的所有子文件,文件名支持通配符(*或?) 2. 可以限制 递归 深度 。 3. 可以随时终止搜索。 4. 可以设置返回结果为子文件,还是子文件夹,还是子文件和子文件夹都返回。 5. 返回结果为路径、文件信息(文件名、属性、修改时间、访问时间等等),能够很方便地对结果进行处理。 6. 支持Unicode,同时尽可能减少了不必要的步骤,提升了处理速度。 题外话:由于 递归 深度 可控,一般写类似 递归 的方法时尽量使用迭代器,例如Fibonacci数列,在python高级中我会把迭代器实现Fibonacci数列的方法贴出来,而不是用 递归 递归 深度 尽量不去修改,用起来也会很绕。下面我贴出来如何测试出本机 递归 深度 : def func(num): if num == 1: return 1 递归 是在函数的定义中使用函数自身的方法,程序调用自身的编程技巧称为 递归 递归 的思想:将大规模的问题变成小规模的问题,问题不变,规模变小。 递归 的去与归 去: 递归 是指 递归 问题可以分解为若干个规模较小,与原问题形式相同的问题,这些子问题可以用相同的解题思路来解决。 归:指这些问题的演化过程是一个由大到小的过程,并且会有一个明确的终点,一旦达到这个临界点,就不用往更小、更远的地方走下去。最后... Python对程序执行中最大函数调用 深度 有默认限制。 可以通过sys标准库包的函数getrecursionlimit()检查系统的调用 深度 上限。 通过sys包的函数setrecursionlimit(n)把调用 深度 的上限设置为n 2> 当某个状态到达后,可向前回退,并继续搜索其它可达状态 3> 当所有状态都达到后,回溯算法结束 3. 程序设计中可利用函数活动对象保存回溯算法的状态数据,因此可以利用 递归 完成回溯算法 4. 回溯算法是 递归 应用的重要场合,同时利用函数调用的活动对象可以保存回溯算法中重要的变量信息, 递归 是回溯