【发布时间】:2017-04-18 04:56:50
【问题描述】:
首先我想说我知道这是解决我的问题的最糟糕的解决方案,但是我只想熟悉递归。我想检查一个序列是否是 DNA(所以它只能包含 A、T、G 或 C)。我的代码:
public Boolean check(String seq) {
System.out.println(seq);
Boolean correct = true;
Character letter = seq.charAt(seq.length() - 1);
if ("ATGC".contains(letter.toString())) {
if (seq.substring(0, seq.length() - 1).length() > 0) {
check(seq.substring(0, seq.length() - 1));
}
} else {
correct = false;
}
System.out.println(seq + " " + correct);
return correct;
}
但是,当我运行代码时,它会在更改 correct = false 后继续运行。为了清楚起见,我将粘贴打印语句的输出:
ATXGCTGC
ATXGCTG
ATXGCT
ATXGC
ATXG
ATX
ATX false
ATXG true
ATXGC true
ATXGCT true
ATXGCTG true
ATXGCTGC true
返回的布尔值是true,但是代码应该在ATX false 之后停止。 什么出了问题,如何解决这个问题?
【问题讨论】:
-
你试过
return-ing递归调用吗? -
哇,原来是这个问题哈哈哈,谢谢! @cricket_007 你能解释一下这里发生了什么吗(把它作为答案发布,这样我就可以接受它,也许它会帮助其他人)
-
你没有定义你的基本情况
标签: java recursion return return-value