草庐IT

RECURSION

全部标签

java - 使用递归的幂函数

我必须用Java编写一个强大的方法。它接收两个整数,它们是正数还是负数都没有关系。它的复杂度应该是O(logN).它还必须使用递归。我当前的代码有两个数字,但我一直输出的结果为零,我不知道为什么。importjava.util.Scanner;publicclassPowers{publicstaticvoidmain(String[]args){floata;floatn;floatres;Scannerin=newScanner(System.in);System.out.print("Enterinta");a=in.nextFloat();System.out.print("E

java - 如何遍历二叉树?

现在我有privatestaticvoiditerateall(BinaryTreefoo){if(foo!=null){System.out.println(foo.node);iterateall(foo.left);iterateall(foo.right);}}你能把它改成迭代而不是递归吗? 最佳答案 您正在寻找的是后继算法。定义如下:第一条规则:树中的第一个节点是树中最左边的节点。下一条规则:节点的后继者是:Next-R规则:如果它有右子树,则右子树中最左边的节点。Next-U规则:否则向上遍历树如果你右转(即这个节点是左

java - 递归 ConcurrentHashMap.computeIfAbsent() 调用永远不会终止。错误或 "feature"?

前段时间,I'vebloggedaboutaJava8functionalwayofcalculatingfibonaccinumbersrecursively,带有ConcurrentHashMap缓存和新的有用的computeIfAbsent()方法:importjava.util.Map;importjava.util.concurrent.ConcurrentHashMap;publicclassTest{staticMapcache=newConcurrentHashMap();publicstaticvoidmain(String[]args){System.out.pri

java - 如何找到公式的所有可能解,例如 100*7-8*3+7? (10 只猫中有 8 只做倒计时求解器)

为了好玩,我决定编写一个简单的程序来解决10只猫中有8只猫倒计时的问题numberpuzzle,链接是倒计时形式,但规则相同。所以我的程序简单地遍历了AxBxCxDxExF的所有可能组合,其中字母是数字,“x”是+、-、/和*。这是它的代码:privatevoidcombineRecursive(intstep,int[]numbers,int[]operations,intcombination[]){if(step%2==0){//evenstepsarenumbersfor(inti=0;i=0){solutionQueue.addLast(newSolution(combina

java - 从单词中删除字符的算法,使得减少的单词仍然是字典中的单词

场景如下,给定一个单词,在每一步中从单词中删除一个字符,这样减少的单词仍然是字典中的单词。继续,直到没有字符为止。重点是:您需要删除正确的字符,例如。在一个单词中,可能有两个可能的字符可以被删除,并且都可能导致减少的单词成为有效单词,但在稍后阶段,一个可能会被减少到最后,即没有留下任何字符,而另一个可能会挂断。例子:星球植物裤子潘一个一个或星球飞机车道不可能进一步,假设lan不是一个词。希望你明白了。请查看我的代码,我正在使用递归,但想知道是否有更高效的解决方案来执行相同的操作。publicclassisMashable{staticvoidinitiate(Strings){mash

java - 通过递归确定整数二叉树的大小

我有BinaryTreeNode(intvalue)类及其左右子节点和BinaryTree(introotVal)类,其中BinaryTreeNode根为rootVal作为其值。我开发了一个代码来计算树中的节点数(在BinaryTreeNode类中),但由于NullPointerException而无法正常工作:publicintsize(){if(this==null){//basecasereturn0;}else{return1+left.size()+right.size();}}然而,我发现另一种采用类似策略的解决方案有效:publicintsize(BinaryTreeNo

java - 如何在 JavaFX 中递归添加菜单和子菜单?

我已经创建了扩展javafx.scene.control.MenuBar的CustomMenuBar类,我想要实现的是仅通过String添加新菜单值如以下代码的start方法所示:packagerecursivemenu;importjavafx.application.Application;importjavafx.collections.ObservableList;importjavafx.scene.Scene;importjavafx.scene.control.Menu;importjavafx.scene.control.MenuBar;importjavafx.sce

java - 将集合映射到所有组合的列表中

我被一个简单的任务困住了。我想做的是改造Map>进入List>获取所有可能的组合:Map{{'k1'=>set{'v11','v12'}},{'k2'=>set{'v21','v22','v23'}},{'k3'=>set{'v31'}}}预期结果:List{Map{'k1'=>'v11','k2'=>'v21','k3'=>'v31'},Map{'k1'=>'v11','k2'=>'v22','k3'=>'v31'},Map{'k1'=>'v11','k2'=>'v23','k3'=>'v31'},Map{'k1'=>'v12','k2'=>'v21','k3'=>'v31'},Ma

Java - 位操作的大 O?

这段代码的大O是什么?我知道所有行都是O(1),除了递归部分。我不确定递归的大O是什么,我感觉它仍然是O(1),因为我们没有比O(1)更差的行,但通常递归是O(n)。代码:publicintgetSum(inta,intb){if(b==0){returna;}if(a==0){returnb;}intadd=a^b;intcarry=(a&b)编辑:顺便说一句,这不是家庭作业,是为面试做准备。 最佳答案 这个函数其实就是O(n)最坏的情况下。正如上面评论中所讨论的,大O表示法引用函数的渐近上界。在最坏的情况下,此函数的上限是您输入

java - 学习java,找不到符号

我正在学习Java,并坚持进行自测练习,编写一个向后打印字符串的递归函数...我了解编译器错误,但我不确定该怎么做。我的代码...classBack{voidBackwards(Strings){if(s.length=0){System.out.println();return;}System.out.print(s.charAt(s.length));s=s.substring(0,s.length-1);Backwards(s);}}classRTest{publicstaticvoidmain(Stringargs[]){Backb;b.Backwards("ASTRING")