首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在java中递归计算字符

在java中递归计算字符
EN

Stack Overflow用户
提问于 2014-05-10 23:29:24
回答 4查看 1K关注 0票数 -1

我需要一点帮助。我需要递归地编写此方法: public static int howManyChar (String s,char c),并且不使用子字符串方法和循环。

有什么想法吗?我被困在这一点上了。

代码语言:javascript
复制
public static int howManyChar (String s, char c)
{
    int count = 0;
    int lastChar = s.length()-1;
    if (s.length()== 0)
        return 0;
    if (s.charAt(lastChar) == c)
    {
       count++;
    }

我已经成功地使用了substring方法:

代码语言:javascript
复制
    int count =0;
    if (s.charAt(0)==c)
        count++;
    if (s.length()>1)
    {
        count+=howManyChar(s.substring(1), c);
    }
    return count;

但是我想不使用子字符串来编写代码。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-05-10 23:43:42

尝尝这个

public static int howManyChar (String s, char c) { if (s.length()==0) return 0; return s.charAt(0) == c ? 1 : 0 + howManyChar(s.substring(1), c); }

或者如果您不能使用substring方法

public static int howManyChar (String s, char c, int pos) { if (pos >= s.length()) return 0; return s.charAt(pos) == c ? 1 : 0 + howManyChar(s, c, ++pos); }

票数 0
EN

Stack Overflow用户

发布于 2017-05-14 14:00:44

我已经看过这里的一些答案,它们要么对于您的问题来说太复杂,要么使用子字符串,要么不使用基本的递归

您的解决方案应该是这样的。

代码语言:javascript
复制
function countChar(String a, char b, int i)
if(i==a.length)
return 0
else if(b ==a.charAt(i))
return 1 + function countChar(a, b, i+1)
else
return function countChar(a,b,i+1)

这部分代码就是循环。

代码语言:javascript
复制
function countChar(String a, char b, int i)
{
   if(i==a.length) 
   {
       return 0
   }
   else 
   {
      //put here a print statement to see what happens.
     // print charAt(i) or i itself
      return function countChar(a, b, i+1) //<-- moving to the next index
   }
}

学习这个循环。您应该使用charAt(i)。子字符串不是必需的..

为了满足需求,您可以将您的方法包装在另一个递归方法中。

代码语言:javascript
复制
function howManyChar(String a, Char b)
{
   countChar(a, b, 0);
}
票数 0
EN

Stack Overflow用户

发布于 2014-05-10 23:50:45

代码语言:javascript
复制
public static int howManyChar (String s, char c)
{
    index++;
        if (s.length() == index)
            return 0;
        else if(s.charAt(index) == c)
           return 1 + howManyChar(s, c);
        else
            return 0 +  howManyChar(s, c);

  }

现在这不是最好的解决方案,我有一个类级别的变量(index)来保存字符串中的位置。但是如果不使用子字符串,我想不出更好的方法。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23582900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档