使用递归查找给定字符串中的最小字符

时间:2016-03-11 05:54:38

标签: java recursion

我必须编写一个返回给定字符串中最小字符(使用ASCII序列)的方法。示例minChar("你好");应该返回'。

目前我正在尝试运行minChar(&#34; hello&#34;,0)。我的想法是它将从h(h <〜)开始,所以它将设置c = h,然后调用minChar(&#34; hello&#34;,1),指定c = e,等等比较字母在最终回归之前&#39; e&#39;因为这是最小值。我错过了什么?

public static char minChar(String x, int z){
    char c = '~';
    while(z < x.length()){
        if(x.charAt(z) < c){
            c = x.charAt(z);
        }
        minChar(x, z+1);
    }
    return c;
}

2 个答案:

答案 0 :(得分:0)

您没有使用minChar()返回的内容。使用它。

public static char minChar(String x, int z){
    char c = '~';
    if(z < x.length()){
        if(x.charAt(z) < c){
            c = x.charAt(z);
        }
        char candidate = minChar(x, z+1); // add assignment
        if (candidate < c) c = candidate; // add update
    }
    return c;
}

答案 1 :(得分:0)

尝试以下代码,它适用于我:

public  String minChar(String x, int z){
   if(z==0)
   {
       c=x.substring(0);
   }
    while(z < x.length()){
        if(x.substring(z,z+1).compareTo(c)<0){
            c = x.substring(z,z+1);
        }
        z++;
        minChar(x, z);
    }
    return c;
}