从String返回数字的递归int方法

时间:2018-12-30 20:40:50

标签: java recursion

我尝试编写一个递归方法,该方法接受一个字符串并返回一个代表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))
     }

每个字符如何递归工作? 谢谢

3 个答案:

答案 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}}