草庐IT

RECURSION

全部标签

Swift 递归函数,返回类型 Closure

下面是一个根据调用的返回函数进行加减的基本函数。funccalculateFunc(_inputValue:Int)->(add:(Int)->(Int),sub:(Int)->(Int)){funcaddFunction(_newValue:Int)->(Int){returninputValue+newValue}funcsubFunction(_newValue:Int)->Int{returninputValue-newValue}return(addFunction,subFunction)}calculateFunc(4).add(2)calculateFunc(4).su

parsing - 跳出深度递归函数调用

我用Objective-C编写了一个关于高度模糊语言的解析器。一切正常。我经常跳出许多抛出异常的函数调用(我一直在我的代码中,所以异常永远不会从解析器中消失)。我想到将代码移植到Swift中,然后我发现Swift中没有异常处理。我不想也不需要异常处理,但是跳出许多不同的嵌套函数调用在编写解析器.在Swift中,有什么好的方法可以代替将异常跳转到@catchblock吗?递归函数的例子,让它更清楚(工作Playground代码):importFoundationfuncaddToSum(sum:Int,rest:String)->Int{ifrest==""{returnsum}else

math - Swift 枚举递归关联值

我正在尝试使用Swift中的枚举创建数学表达式。此枚举可以是一个常量,具有ComplexNumber类型(一个简单结构)的关联值。它也可以是具有递归关联值的平方根表达式。例如,我希望能够将sqrt(sqrt(1+2i))存储在枚举中。enumExpression{caseSqrt(Expression)caseConstant(ComplexNumber)}Xcode(6beta2)立即崩溃。有什么问题?根据我在Swift指南中读到的有关关联值的内容,这应该可行。 最佳答案 从beta4开始,现在可以使用Swift2.0。发行说明中

swift - 在 Swift 中实现简单树结构的递归生成器

我在内存中有一个基于XML文档的简单树结构,我正在尝试编写一个递归生成器来支持SequenceType,但我不知道如何实际执行此操作。这是我的第一次尝试:@objcpublicclassXMLNode:NSObject,SequenceType{publicweakvarparentNode:XMLNode?publicvarnodeName:Stringpublicvarattributes:[String:String]publicvarchildNodes=[XMLNode]()publicfuncgenerate()->AnyGenerator{varchildGenerato

swift - Swift 中的递归 block

我一直在尝试将此代码块从Objective-C(取自https://gist.github.com/mikeash/1254684)转换为Swift。我已经成功地使用它来根据API调用的结果重复一段代码。在Swift中有没有更好的方法来做到这一点?dispatch_block_trecursiveBlockVehicle(void(^block)(dispatch_block_trecurse)){return^{block(recursiveBlockVehicle(block));};}感谢任何帮助。 最佳答案 这是您的obj-

swift - Swift 中泛型的递归枚举

我是Swift的新手。我试图用递归枚举和泛型实现二叉树:enumBinaryTree{indirectcaseNode(T,BinaryTree,BinaryTree)caseNothing}funcinorder(_root:BinaryTree)->[T]{switchroot{case.Nothing:return[]caselet.Node(val,left,right):returninorder(left)+[val]+inorder(right)}}这是我得到的错误:$swiftADT.swiftADT.swift:83:20:error:cannotconvertval

swift - 如何使用递归定义在 Swift 中检查回文

我喜欢Swift中的许多功能,但使用操作字符串仍然是个大麻烦。funccheckPalindrome(word:String)->Bool{print(word)ifword==""{returntrue}else{ifword.characters.first==word.characters.last{returncheckPalindrome(word.substringWithRange(word.startIndex.successor()..只要字符串的长度是奇数,这段代码就会失败。当然我可以做到,所以block的第一行是ifword.characters.count,但是

java - 递归查找链表中的倒数第 n 个元素

我正在练习基本的数据结构,但在递归方面遇到了一些困难。我了解如何通过迭代执行此操作,但我所有尝试通过递归从链表的最后一个节点返回第n个节点的结果都为null。到目前为止,这是我的代码:publicstaticinti=0;publicstaticLink.NodefindnthToLastRecursion(Link.Nodenode,intpos){if(node==null)returnnull;else{findnthToLastRecursion(node.next(),pos);if(++i==pos)returnnode;returnnull;}任何人都可以帮助我了解我哪里

java - java中斐波那契函数的尾调用优化

我正在研究尾调用递归并发现了一些提到的文档。SunJava没有实现尾调用优化。我编写了以下代码以3种不同的方式计算斐波那契数:1.迭代2.头部递归3.尾递归publicclassFibonacci{publicstaticvoidmain(String[]args)throwsInterruptedException{intn=Integer.parseInt(args[0]);System.out.println("\nValueofn:"+n);System.out.println("\nUsingIteration:");longl1=System.nanoTime();fibo

java - 从一组中找出浪费最少的数字

一个集合被传递给下面的这个方法,并且一个柱的长度也被传递进来。解决方案应该输出集合中的数字,如果集合中的某些数字被从柱中移除,那么解决方案应该输出最小的浪费量长度。因此,条形长度10,集合包括6、1、4,因此解决方案是6和4,并且浪费为0。我在通过集合回溯的条件上遇到了一些麻烦。我还尝试使用浪费的“全局”变量来帮助回溯方面,但无济于事。SetInt是一个手工制作的集合实现,可以添加、删除、检查集合是否为空并返回集合中的最小值。/**Tochangethistemplate,chooseTools|Templates*andopenthetemplateintheeditor.*/pac