【java – 为我的语法编写一个递归后代解析器】教程文章相关的互联网学习教程文章

java – 递归计算字符串中的字符出现次数【代码】

我正在制作一个程序来计算在字符串中找到字符的次数.这是我的方法的样子:public static int count (String line, char c) {int charOccurences = 0; //= 0;for (int x = 0 ; x < line.length () ; x++){if (line.charAt (x) == c){charOccurences++;line = line.substring (0, x) + line.substring (x + 1);return count (line, c);}elsereturn charOccurences;}return charOccurences; }它总是返回0,因为一旦该方法调用自身它将c...

java基础----递归实现文件搜索

package com.henu.io;import java.io.File; /**??????????????????????????????????????????*不使用文件过滤器,则看文件的绝对路径,如果这个路径中没有.java文件,则搜索不出**/ public class Demo05_递归实现文件搜索 {public static void main(String[] args) {File file = new File("F:\\workspace\\第一阶段\\days01\\Days07\\src\\com\\henu\\io"); // printDir(file);printDir(file, ".java");}//搜索F:\workspace\第一阶...

java基础----递归

package com.henu.io;import java.util.Iterator;/** ?递归:指在当前方法内调用自己的这种现象。* 注意:递归必须要有结束条件*/ public class Demo03_递归 {public static void main(String[] args) {/** 此函数会一直调用自身,而且没有结束语句,* 最终报出java.lang.StackOverflowError*/ // System.out.println("main"); // main(args);//递归累加System.out.println(buDiGuiLeiHe(100));//5050System.out.println(diGuiLe...

如何使用Java中的递归来保留信息【代码】

基本上,每次我递归时,我都会重置变量“path”,但我需要保留这些信息.另外,我不能将它作为参数传递.有没有办法做到这一点? 这是我现在的代码:public List<Person> getDiseaseRouteTo(Person c){List<Person> path = new LinkedList<Person>();if (this.root == c) {path.add(c);} else if (this.root != c) {path.add(this.root);for (DiseaseTree child: this.getChildren()) {if (child.contains(c)) {path.add(child.getRoot()...

使用jsr指令进行Java递归【代码】

我使用Jasmin Java汇编程序编译玩具语言.但是当我使用jsr指令递归回子程序,并使用java运行Jasmin的输出时,我收到错误“递归调用jsr条目”.这是Jasmin代码(它是计算5!(我已经省略了类定义;所有这些都在主方法体中)):f:swapistore 2iload 2ifeq label0iload 2iload 2ldc 1isubjsr fistore 1istore 2iload 1iload 2imulgoto label1 label0:ldc 1 label1:swapastore 0ret 0 main:ldc 5jsr fistore 1iload 1解决方法:§4.8.2 of the JV...

java – 递归和返回关键字【代码】

我目前正在研究Java教程,现在正在使用Recursions. 我有以下代码来计算传递给阶乘方法的任何数字的阶乘public class App {public static void main(String[] args) {//E.g 4! = 4*3*2*1(factorial 4)System.out.println(factorial(4));}private static int factorial(int value){//System.out.println(value);if (value == 1){return 1;}return factorial(value - 1)*value;} }我无法理解这部分内容if (value == 1){return 1; } ret...

递归到迭代(java)【代码】

作为编程的初学者,我试图将以下递归方法转换为迭代方法,但我只是不了解它.方法或函数有一个二进制树,如递归,我想使用一个数组的迭代解决方案..不幸的是,我很困惑如何做到这一点. 我已经检查了将fibonnaci递归方法转换为迭代方法的方法.但我认为这不一样.另外我不确定树搜索方法是否有用?!任何帮助,提示,想法将不胜感激.谢谢.public static int funct(int n) {if (n == 0) return 1;if (n == 1) return 2;if n > 1 return funct(n...

递归java上的堆栈溢出错误【代码】

我需要找到数组中数字之间最长的方式(从大到小).我试图编写递归函数并得到java.lang.StackOverflowError,但由于缺乏知识,我不明白为什么会发生这种情况. 首先,我初始化数组并用随机数填充它:public long[] singleMap = new long[20]; for (int i = 0; i < 20; i++) {singleMap[i] = (short) random.nextInt(30);}然后,我试图找到倒数的最长路径(例如{1,4,6,20,19,16,10,6,4,7,6,1 ……})并返回计数等数字.public int find(long[] ...

编写递归下降解析以解析Java中的epsilon(ε)【代码】

例如,EBNF A ::= B c; B ::= T1 | T2 | ε T1 ::= a T2 ::= bparseA() { switch(currentToken.kind){ case Token.a :parseT1(); case Token.b :parseT2(); break;case <epsilon> :break; default:// report error break; } }如何编写解析器解析Java中的epsilon(空字符串集)?解决方法:epsilon只是“允许空字符串”的标记,所以你不需要解析任何东西;下降完成了.你似乎不太可能真的有这样的代币;您需要检测是否没有可用的令牌,或者是...

Java使用递归返回布尔值true【代码】

我试图看看我的二进制搜索树中是否包含一个值,并且我使用递归遍历树.问题是函数返回false作为调用堆栈上的最后一个值而不是true. 这是伪代码:public boolean containsValue(Node node, Value v) {if (node.value.equals(v)) {return true;} containsValue(node.left, v); // <- search left treecontainsValue(node.right, v); // <- search right treereturn false; }这总是返回false. 但是我不能这样做,因为第二个return语句是死...

在Java中递归创建Hasmaps【代码】

我正在尝试为我输入的每个文档创建一个新的HashMap.在pseudeocode中,我可以想到类似的东西:For(eachInputDoc) {Map<String, String> mapInputNumber = new HashMap<String, String>; }那么对于4个文件你会有:mapInput1 mapInput2 mapInput3 mapInput4我怎么能做到这一点?解决方法:看起来你正试图动态声明变量.你不能用Java做到这一点 – 变量本身是在编译时确定的.但是,您可以创建一个列表:List<Map<String, String>> maps = n...

java – 为什么我的递归不起作用?【代码】

为什么我的代码不起作用?我正在尝试实现一个递归方法,它将返回整数所具有的位数.这是我的代码:public int numOfDigits(int num) {if (num < 10)return 1;return numOfDigits(num / 10); }解决方法:将num除以10时,您将摆脱一位数(最后一位),但您忘记将其添加到结果中. 您需要的代码应该更像:public int numOfDigits(int num) {if (num < 10)return 1;return 1 + numOfDigits(num / 10); }…使用三元运算符可以简化为一个班轮:pu...

java如何在没有递归的情况下创建具有相同类型子节点的对象?【代码】

这可能是一个非常明显的问题,但我无法完全理解它. 我开始实现自己的树结构,并认为每个节点都需要将其父/子保存在其自身内部.以下是代码的简化版本:public class Container {public String name;public String type;public Container child;public Container(String name, String type){this.name = name;this.type = type;}public void createChild(String name, String type){this.child = new Container(name, type);} }问题是这...

java – 递归和递归方法【代码】

我正在攻读我的计算机科学决赛,并且回过头来看看我在课堂上讨论过的一些我从未理解过的事情.主要是递归.我想我已经掌握了简单的递归示例,但我正在尝试通过以前的考试,并且无法弄清楚应该如何完成. 这是一个问题:Texas numbers (Tx(n)) are defined as follows for non-negative numbers (assume true): Tx(n) = 10 if n is 0 Tx(n) = 5 if n is 1 Tx(n) = 2*(Tx(n-1) + Tx(n-2) ...

Java递归插入排序?【代码】

所以我试图将下面的代码变成一个递归方法,插入排序,但是尽管我尝试的却不能.谁能帮我?public static void insertionSort(int[] array){for (int i = 1; i < array.length; i++){int j = i;int B = array[i];while ((j > 0) && (array[j-1] > B)){array[j] = array[j-1];j--;}array[j] = B;} }编辑:我在考虑这样的事情,但对我来说看起来并不是很复杂……public static void insertionSort(int[] array, int index){if(index < arr...