Questions tagged «recursion»

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

3
递归ConcurrentHashMap.computeIfAbsent()调用永远不会终止。错误还是“功能”?
前段时间,我写了一篇关于Java 8函数式递归计算斐波纳契数的方法,其中包括ConcurrentHashMap缓存和新的有用computeIfAbsent()方法: import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class Test { static Map<Integer, Integer> cache = new ConcurrentHashMap<>(); public static void main(String[] args) { System.out.println( "f(" + 8 + ") = " + fibonacci(8)); } static int fibonacci(int i) { if (i == 0) return i; if (i == 1) return …

6
生成器可以递归吗?
我天真地尝试创建一个递归生成器。没用 这是我所做的: def recursive_generator(lis): yield lis[0] recursive_generator(lis[1:]) for k in recursive_generator([6,3,9,1]): print(k) 我所得到的只是第一项6。 有没有办法使这种代码起作用?本质yield上是在递归方案中将命令转移到以上级别吗?

3
使用self.xxxx作为默认参数-Python
我正在尝试简化我的作业问题之一,并使代码更好一点。我正在使用的是二进制搜索树。现在,我的Tree()班级中有一个函数可以查找所有元素并将它们放入列表中。 tree = Tree() #insert a bunch of items into tree 然后我使用makeList()函数从树中取出所有节点,并将它们放入列表中。要调用该makeList()函数,我要做tree.makeList(tree.root)。对我来说,这似乎有些重复。我已经用调用了树对象,tree.所以tree.root只是浪费了一点输入。 现在,makeList函数为: def makeList(self, aNode): if aNode is None: return [] return [aNode.data] + self.makeList(aNode.lChild) + self.makeList(aNode.rChild) 我想使aNode输入一个默认参数,例如aNode = self.root(它不起作用),这样我就可以用来运行该函数tree.makeList()。 第一个问题是,为什么这样不起作用? 第二个问题是,有没有一种方法可以起作用?如您所见,该makeList()函数是递归的,因此我无法在该函数的开头定义任何内容,否则会遇到无限循环。 编辑 这是所有要求的代码: class Node(object): def __init__(self, data): self.data = data self.lChild = None self.rChild = None class …


3
JavaScript尾部调用中的函数是否已优化?
我一直试图Tail call optimization在JavaScript上下文中进行理解,并为编写了以下递归和尾递归方法factorial()。 递归: function factorial (n) { if (n < 2) { return 1; } else { return n * factorial(n-1); } } 尾递归: function factorial (n) { function fact(n, acc) { if (n < 2) { return acc; } else { return fact(n-1, n * acc); } } …

5
使用嵌套对象时,如何在AngularJS中创建递归模板?
我正在尝试从JSON对象动态构建表单,该对象包含表单元素的嵌套组: $scope.formData = [ {label:'First Name', type:'text', required:'true'}, {label:'Last Name', type:'text', required:'true'}, {label:'Coffee Preference', type:'dropdown', options: ["HiTest", "Dunkin", "Decaf"]}, {label: 'Address', type:'group', "Fields":[ {label:'Street1', type:'text', required:'true'}, {label:'Street2', type:'text', required:'true'}, {label:'State', type:'dropdown', options: ["California", "New York", "Florida"]} ]}, ]; 我一直在使用ng-switch块,但是它对于嵌套项变得站不住脚,就像上面的Address对象一样。 这是小提琴:http : //jsfiddle.net/hairgamiMaster/dZ4Rg/ 关于如何最好地解决此嵌套问题的任何想法?非常感谢!


10
递归搜索目录中的文件
我有以下代码通过目录递归搜索文件,该目录向我返回了所有xml文件的列表。除根目录中的xml文件未包含在列表中之外,其他所有方法都运行良好。 我知道为什么,因为这样做的第一件事是获取根目录中的目录,然后获取文件,从而在根目录上缺少GetFiles()调用。我尝试在foreach之前包含GetFiles()调用,但结果与我预期的不同。 public static ArrayList DirSearch(string sDir) { try { foreach (string d in Directory.GetDirectories(sDir)) { foreach (string f in Directory.GetFiles(d, "*.xml")) { string extension = Path.GetExtension(f); if (extension != null && (extension.Equals(".xml"))) { fileList.Add(f); } } DirSearch(d); } } catch (Exception ex) { Console.WriteLine(ex.Message); } return fileList; } 我的目录结构是这样的: …
71 c#  recursion 

5
如何在文件夹及其所有子文件夹中搜索某种类型的文件
我正在尝试在给定文件夹中搜索给定类型的所有文件,并将它们复制到新文件夹中。 我需要指定一个根文件夹,并在该文件夹及其所有子文件夹中搜索与给定类型匹配的所有文件。 如何搜索根文件夹的子文件夹及其子文件夹?似乎可以使用递归方法,但是我无法正确实现一个方法。

6
SICP中练习1.6的解释是什么?
我刚刚开始通过SICP工作(我个人;这不是一节课),而且我在练习1.6中苦苦挣扎了几天,但我似乎无法弄清楚。这是Alyssa根据进行重新定义if的方法cond,如下所示: (define (new-if predicate then-clause else-clause) (cond (predicate then-clause) (else else-clause)) 她在一些简单的情况下成功地对其进行了测试,然后使用它来重写平方根程序(与配合使用就可以了if): (define (sqrt-iter guess x) (new-if (good-enough? guess x) guess (sqrt-iter (improve guess x) x))) 然后问题问:“当Alyssa试图用它来计算平方根时会发生什么?解释。” [如果有必要,我很高兴能重现其他程序(good-enough?,improve,等),只是让我知道。] 现在,我知道会发生什么:它永远不会返回值,这意味着程序可以无限递归。我只是无法解释为什么会这样。两者之间存在任何细微的差异,if并且使new-if我难以理解。任何和所有帮助非常感谢。

4
为什么我的递归函数返回None?
我有一个自称的函数: def get_input(): my_var = input('Enter "a" or "b": ') if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') get_input() else: return my_var print('got input:', get_input()) 现在,如果我仅输入“ a”或“ b”,则一切正常: Type "a" or "b": a got input: a 但是,如果我输入其他内容,然后输入“ a”或“ b”,则会得到以下信息: Type "a" or …

10
如何从Unix命令行递归解压缩目录及其子目录中的档案?
该unzip命令没有用于递归解压缩存档的选项。 如果我具有以下目录结构和档案: /母亲/Loving.zip / Scurvy / Sea Dogs.zip /Scurvy/Cures/Limes.zip 我想将所有档案解压缩到与每个档案同名的目录中: /母亲/爱人/1.txt /母亲/Loving.zip / Scurvy / Sea Dogs / 2.txt / Scurvy / Sea Dogs.zip /Scurvy/Cures/Limes/3.txt /Scurvy/Cures/Limes.zip 我会发出什么命令? 重要的是,不要让其中包含空格的文件名阻塞。
68 unix  recursion  spaces  unzip 

9
跟踪多少次调用递归函数
function singleDigit(num) { let counter = 0 let number = [...num + ''].map(Number).reduce((x, y) => {return x * y}) if(number <= 9){ console.log(number) }else{ console.log(number) return singleDigit(number), counter += 1 } } singleDigit(39) 运行代码段隐藏结果展开摘要 上面的代码采用一个整数,并将其乘以自己的数字,将其减少为一位数字。 示例是39。 3 x 9 = 27. 2 x 7 = 14. 1 x 4 = …

7
如何写2 ** n-1作为递归函数?
我需要一个接受n并返回2 n -1的函数。听起来很简单,但是该函数必须是递归的。到目前为止,我只有2 n: def required_steps(n): if n == 0: return 1 return 2 * req_steps(n-1) 练习指出:“您可以假设参数n始终为正整数且大于0”
49 python  recursion 


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.