在Java中,当满足特定条件时,是否有方法结束递归方法



是否有一种方法可以在满足条件时突然返回到调用下面方法的方法?类似于for循环的break。

public void createTree(TreeNode tree) throws IOException {
    if (i >= preorder.length) {
        // Leave recursive method
    } else if (preorder[i] == '0') {
        tree.value = '0';
        tree.left = tree.right = null;
        i++;                
    } else {
        tree.value = preorder[i];
        i++;
        tree.left = new TreeNode();
        createTree(tree.left);
        tree.right = new TreeNode();
        createTree(tree.right);
    }
}

谢谢。

您可以简单地让方法返回。然后递归将向后执行,其余语句将被执行。

您可以从方法返回一个状态:

/**
 * @return false if the recursion has been aborted
 */
public boolean createTree(TreeNode tree) throws IOException {
    if (i >= preorder.length) {
        return false;
    } 
    else if (preorder[i] == '0') {
        tree.value = '0';
        tree.left = tree.right = null;
        i++;                
    } 
    else {
        tree.value = preorder[i];
        i++;
        tree.left = new TreeNode();
        if (!createTree(tree.left)) {
            return false;
        };
        tree.right = new TreeNode();
        if (!createTree(tree.right)) {
            return false;
        }
    }
}

你可以抛出一个异常,但这似乎是"脏"

你可以考虑使用一个运行时异常,但我不认为这是一个好的设计。

如果我的递归走了那么远,这意味着它是必需的…我可能会使用return

最新更新