Questions tagged «recursion»

递归是一种函数调用,其中函数调用自身。这样的函数也称为递归函数。结构递归是一种解决问题的方法,其中问题的解决方案取决于对同一问题的较小实例的解决方案。

8
尾递归如何工作?
我几乎了解尾递归的工作原理以及它与普通递归之间的区别。我只是不明白为什么它不要求堆栈来记住它的返回地址。 // tail recursion int fac_times (int n, int acc) { if (n == 0) return acc; else return fac_times(n - 1, acc * n); } int factorial (int n) { return fac_times (n, 1); } // normal recursion int factorial (int n) { if (n == 0) return 1; …

19
javascript:递归匿名函数?
假设我有一个基本的递归函数: function recur(data) { data = data+1; var nothing = function() { recur(data); } nothing(); } 如果我有匿名功能,例如... (function(data){ data = data+1; var nothing = function() { //Something here that calls the function? } nothing(); })(); 我想要一种调用该函数的函数的方法...我曾经在某个地方(我不记得在哪里)看到过脚本,这些脚本可以告诉您所调用的函数的名称,但是我不记得其中任何一个该信息现在。

12
如何[递归]在PHP中压缩目录?
目录类似于: home/ file1.html file2.html Another_Dir/ file8.html Sub_Dir/ file19.html 我正在使用与PHPMyAdmin http://trac.seagullproject.org/browser/branches/0.6-bugfix/lib/other/Zip.php中使用的相同的PHP Zip类。我不确定如何压缩目录而不是仅压缩文件。这是我到目前为止的内容: $aFiles = $this->da->getDirTree($target); /* $aFiles is something like, path => filetime Array ( [home] => [home/file1.html] => 1251280379 [home/file2.html] => 1251280377 etc... ) */ $zip = & new Zip(); foreach( $aFiles as $fileLocation => $time ){ $file = $target …

11
递归子文件夹搜索并返回列表python中的文件
我正在编写一个脚本,以递归地遍历主文件夹中的子文件夹并根据某种文件类型构建一个列表。我的脚本有问题。当前设置如下 for root, subFolder, files in os.walk(PATH): for item in files: if item.endswith(".txt") : fileNamePath = str(os.path.join(root,subFolder,item)) 问题是subFolder变量正在拉入子文件夹列表,而不是ITEM文件所在的文件夹。我曾考虑过为子文件夹运行一个for循环,然后加入路径的第一部分,但我想出了ID双重检查以了解在此之前是否有人提出建议。谢谢你的帮助!

9
递归本身就是一种功能吗?
...或者只是一种做法? 我之所以这样问是因为我的教授曾提出过一个论点:我因没有在课堂上讨论递归而递归调用函数而失去了信誉,我的论点是我们通过学习return和方法隐式地学习了它。 我在这里问是因为我怀疑有人有明确的答案。 例如,以下两种方法有什么区别: public static void a() { return a(); } public static void b() { return a(); } 除了“ a永远继续”(在实际程序中,当提供无效输入时,它可以正确地再次提示用户),a和之间是否有根本区别b?对于未优化的编译器,它们的处理方式有何不同? 归根结底,通过学习可以归结为是否return a()从b我们为此还学会了return a()从a。有吗
116 recursion 

18
了解递归函数如何工作
正如标题所解释的那样,我有一个非常基本的编程问题,但我现在还无法理解。过滤掉所有(极其聪明的)“为了理解递归,您必须首先理解递归。” 来自各种在线话题的回复我还是不太明白。 了解到,当面对不知道的知识时,我们可能会提出错误的问题或错误地提出正确的问题,我会分享我“认为”的问题,希望有相貌相似的人可以分享一些一点知识,将有助于为我打开递归灯泡! 这是函数(语法用Swift编写): func sumInts(a: Int, b: Int) -> Int { if (a > b) { return 0 } else { return a + sumInts(a: a + 1, b: b) } } 我们将使用2和5作为我们的参数: println(sumInts(a: 2, b: 5)) 显然答案是14。但是我不清楚如何实现这一价值。 这些是我的2个挂断电话: 递归调用该函数,直到满足条件为止。该条件是a> b。满足此条件后,返回0。乍一看,我希望返回值为0,这显然是不正确的。 在每次迭代中打印出'a'的值会产生一个我期望的值:2、3、4、5(此时5 + 1> b满足第一个条件:a> b),但我仍然不知道看一下如何达到14的值。 我首先想到的是,与以下类似的事情正在神奇地发生: var answer …

30
给定一些美元价值时,如何查找硬币的所有组合
几个月前,我发现了一段我正在编写的准备面试的代码。 根据我的评论,它正在尝试解决此问题: 给定一些美分的美元价值(例如200 = 2美元,1000 = 10美元),找到构成美元价值的所有硬币组合。只能携带几美分(1¢),镍币(5¢),角钱(10¢)和四分之一(25¢)。 例如,如果给出100,则答案应为: 4 quarter(s) 0 dime(s) 0 nickel(s) 0 pennies 3 quarter(s) 1 dime(s) 0 nickel(s) 15 pennies etc. 我相信这可以通过迭代和递归的方式解决。我的递归解决方案有很多问题,我想知道其他人如何解决这个问题。这个问题的困难部分是使其尽可能高效。

5
GDB损坏的堆栈框架-如何调试?
我有以下堆栈跟踪。可以从中得出一些有用的调试信息吗? Program received signal SIGSEGV, Segmentation fault. 0x00000002 in ?? () (gdb) bt #0 0x00000002 in ?? () #1 0x00000001 in ?? () #2 0xbffff284 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?) (gdb) 当获得时,从哪里开始看代码Segmentation fault,而堆栈跟踪不是那么有用? 注意:如果我发布代码,则SO专家会给我答案。我想从SO那里获得指导,自己找到答案,所以我不在这里发布代码。道歉。
113 c  recursion  gdb 

10
递归与迭代
说在所有使用递归的地方for都可以使用循环是正确的吗?如果递归通常较慢,那么在for循环迭代中使用递归的技术原因是什么? 并且如果总是有可能将递归转换为for循环,是否有经验法则?

6
为什么默认情况下Ocaml / F#中的函数不递归?
为什么默认情况下F#和Ocaml(以及其他语言)中的函数不是递归的? 换句话说,为什么语言设计人员认为最好让您键入如下rec声明是一个好主意: let rec foo ... = ... 并默认不提供函数递归功能?为什么需要显式rec构造?
104 f#  recursion  ocaml 


30
递归地反转Java中的链表
我已经在一个类的Java项目上工作了一段时间。它是链表(此处称为AddressList,包含称为的简单节点ListNode)的实现。问题在于,一切都必须使用递归算法来完成。我可以用一种方法来做所有的事情:public AddressList reverse() ListNode: public class ListNode{ public String data; public ListNode next; } 现在,我的reverse函数只是调用一个带有参数以允许递归的辅助函数。 public AddressList reverse(){ return new AddressList(this.reverse(this.head)); } 我的助手功能具有的签名private ListNode reverse(ListNode current)。 目前,我让它使用堆栈来迭代地工作,但这不是规范所要求的。我在C语言中找到了一种算法,该算法可以递归地将其递归逆转并将其转换为Java代码,并且可以正常工作,但是我对此并不了解。 编辑:没关系,我在此期间已找到答案。 private AddressList reverse(ListNode current, AddressList reversedList){ if(current == null) return reversedList; reversedList.addToFront(current.getData()); return this.reverse(current.getNext(), reversedList); } 当我在这里时,有人看到此路线有任何问题吗?

11
将一系列父子关系转换为层次树?
我有一堆名称-父母名对,我想将其变成尽可能少的分层树结构。因此,例如,这些可能是配对: Child : Parent H : G F : G G : D E : D A : E B : C C : E D : NULL 需要将其转换为一个或多个分层树: D ├── E │ ├── A │ │ └── B │ └── C └── G ├── F └── H 我想要的最终结果是一组嵌套<ul>元素,每个元素都<li>包含孩子的名字。 配对中没有不一致的地方(子代是它自己的父代,父代是子代的孩子,等等),因此可以进行大量优化。 …
100 php  recursion  tree 

6
如何实现__getattribute__而没有无限递归错误?
我想覆盖对类中一个变量的访问,但通常返回所有其他变量。我该怎么做__getattribute__呢? 我尝试了以下操作(它也应说明我要执行的操作),但是出现了递归错误: class D(object): def __init__(self): self.test=20 self.test2=21 def __getattribute__(self,name): if name=='test': return 0. else: return self.__dict__[name] >>> print D().test 0.0 >>> print D().test2 ... RuntimeError: maximum recursion depth exceeded in cmp
100 python  class  oop  recursion  getattr 

5
进行递归自联接的最简单方法?
在SQL Server中进行递归自联接的最简单方法是什么?我有一张这样的桌子: PersonID | Initials | ParentID 1 CJ NULL 2 EB 1 3 MB 1 4 SW 2 5 YT NULL 6 IS 5 而且我希望能够只获取与特定人员开始的层次结构相关的记录。因此,如果我通过PersonID = 1请求CJ的层次结构,则会得到: PersonID | Initials | ParentID 1 CJ NULL 2 EB 1 3 MB 1 4 SW 2 对于EB,我会得到: PersonID | Initials | …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.