使用递归来计算字符串的长度

时间:2013-11-05 02:34:29

标签: java string recursion

我现在在课堂上学习递归,对于作业,我们要使用递归来计算字符串的长度而不使用.getLength或类似的东西。这是我尝试过但到目前为止我在第20行遇到错误而且很困惑。

import java.util.Scanner;


 public class StringCounter {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner kb = new Scanner(System.in);
    System.out.println("Enter a String: ");
    String s = kb.nextLine();
    System.out.println("The length of your string is: " + stringLength(s));
}

public static int stringLength(String s) {
    if (s.equals(""))
        return 0;
    else
        return stringLength(s.substring(0)) + 1;
}

}

4 个答案:

答案 0 :(得分:6)

您正在进行无限递归,因为您传递的是相同的字符串。改为:

return stringLength(s.substring(1)) + 1;
                            //  ^

答案 1 :(得分:3)

在递归调用中,您从索引0开始进行子字符串调用。我想你的意思是使用索引1.当你改为s.substring(1)

时它会起作用

答案 2 :(得分:1)

可能你得到了内存或堆栈溢出(heh)错误;尝试

return stringLength(s.substring(1)) + 1;

答案 3 :(得分:0)

你需要使用 stringLength(s.substring(1))+ 1;

如果使用s.substring(0),则不会更改字符串值。这就是代码无限递归的原因,结果抛出了一个错误java.lang.StackOverflowError。