本文介绍了递归 Java 调用中的空结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在处理以下 CodingBat 问题:

给定一个包含一对括号的字符串,递归计算一个仅由括号及其内容组成的新字符串,因此xyz(abc)123"产生(abc)".

parenBit("xyz(abc)123") → "(abc)"
parenBit("x(hello)") → "(hello)"
parenBit("(xy)1") → "(xy)"

我试图这样解决它:

import java.util.LinkedList;
import java.util.List;

public class ParenBit {
    public static void main(String arg[]) {
        ParenBit p = new ParenBit();
        p.solve(arg[0], '(', "");
        System.out.println(p.finalResult.toString());
    }

    private List<String> finalResult = new LinkedList<String>();

    private boolean solve(String s, char c, String result) {
        if (s.length() == 0)
            return false;
        char f = s.charAt(0);
        if (f == '(') {
            boolean b = solve(s.substring(1), ')', result);
            if (b) {
                result += f + "";
            }
            if (f == c)
                return true;
        } else if (f == ')') {
            if (c == f) {
                result += f + "";
                finalResult.add(result);
                solve(s.substring(1), '(', "");
                return true;
            }
        } else {
            if (c == ')') {
                boolean b = solve(s.substring(1), ')', result);
                if (b) {
                    result += f + "";
                }
            } else if (c == '(') {
                return solve(s.substring(1), '(', result);
            }
        }
        return false;
    }
}

当我用这个输入调用它时:

When I called it with this input:

哇(论文)

我得到空结果.我该如何解决这个问题?

I get empty results. How can I fix this?

推荐答案

当我将您的代码粘贴到我的 IDE 中时,它告诉我

When I paste your code into my IDE, it tells me

if (b) {
    result += f + "";
}

分配给'result'的值f + ""从未使用过.

The value f + "" assigned to 'result' is never used.

意味着您更新了 result 参数,但您从不使用更新后的值,因此您总是使用 empty 调用 solve() 方法result 参数.

Meaning you update the result parameter but you never use the updated value as a result you always call solve() method with an empty result parameter.

这篇关于递归 Java 调用中的空结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 06:40