我尝试编写一个递归方法,该方法接受一个字符串并返回一个代表hashCode的数字: 我们的hashCode号是通过将字符串的所有ASCII码相加得出的, 每个字符后均代表一个特定的ASCII数字。 (R)82 +(e)101 +(d)100 = 219数字“ RED”返回带有方法的字符串:例如
public int hashCode(String value) {
final int prime = 31;
int result = 1;
result = prime * result + x; //NOT recognize
result = prime * result + y; //NOT recognize
if(value.length() == 0){
return 0;
}
return value.charAt(0)+hashCode(value.substring(1))
}
每个字符如何递归工作? 谢谢
答案 0 :(得分:1)
很显然,您是来此站点帮助完成学校任务的。 无论如何,我会尝试解释递归方法的工作原理。 很快,该方法会自行调用,但是调用不能是无限的,因此您应该确定何时调用停止。
让我们考虑递归地实现String中char的总和。 示例:
String test = "";
(空字符串)。您的方法可以返回0。String test = "R";
该方法应返回codePoint“ R” String test = "Red";
该方法应返回“ R”的代码点+其余String(“ ed”)中chars的codePoints之和。查看简化代码:
public class Helper {
private static int recursiveSumOfChars(String input){
if(input.length() == 0) return 0;
if(input.length() == 1) return input.codePointAt(0);
else return input.codePointAt(0) + recursiveSumOfChars(input.substring(1));
}
public static void main(String[] args) {
String test = "Red";
System.out.println(recursiveSumOfChars(test));
}
}
答案 1 :(得分:0)
我想你想要类似的东西
public int hashCode(String value) {
final int prime = 31;
int result = 1;
result = prime * result + x;
result = prime * result + y;
if(value.length() == 0){
return 0;
}
return value.charAt(0)+hashCode(value.substring(1))
}
`
答案 2 :(得分:0)
我不确定这是在做什么,但是
{{1}}