![]() |
1
1
让我们首先确定代码复制通常是个坏主意。 所以不管我们采取什么解决方案 逻辑 我认为有三种解决办法:
我不知道这些解决方案中哪一个客观上是最好的。然而,我注意到有些算法(1)被普遍接受为惯用解,例如计算两个数的GCD的Euklids算法。
我一般不喜欢
解决方案(3)给我的印象是过度设计,虽然我想不出任何批评,除了它的更多文本阅读。一般来说,我不喜欢任何后缀为
总之,对于大多数情况,我可能更喜欢(1),尽管我 事实上在类似的情况下使用。 |
![]() |
2
1
抱歉,您的代码:
只有在需要高性能的情况下才应该使用难以阅读的代码(但无论如何,许多性能问题都是由糟糕的体系结构引起的…)。如果您必须编写这样的代码,那么您所能做的就越少,那就是编写一个好的javadoc和单元测试。。。我们的开发人员通常不关心这些方法的实现,如果我们只是要使用它,而不是返工它。。。但是因为第一眼看到的东西并不能告诉我们它是什么,我们可以相信它会像我们期望的那样工作,我们可以腾出时间。。。 递归方法在很短的时间内是可以的,但我认为如果算法很复杂,如果有其他方法可以在几乎相同的计算时间内完成,则应该避免使用递归方法。。。特别是其他人是否愿意用这种方法工作。 以你的例子来说,这是一个很短的方法,但不管怎样,如果你不关心性能,你可以使用类似的方法:
不是最快的,但如果只是关于速度,请使用c++或asm:) |
![]() |
3
1
public boolean endOther(String a, String b){ String alower=a.toLowerCase(); String blower=b.toLowerCase(); if ( a.length() < b.length() ){ return blower.endsWith(alower); } else { return alower.endsWith(blower); } }
人们经常听说“递归”与“迭代”/“非递归”实现。我没听说过你给的各种选择有什么特别的名字。 无论如何,我的建议是在每一次发言中尽可能少做一些事情。在一个语句中执行的操作越多,对于需要维护代码的其他人来说,它就越令人困惑。
|
![]() |
4
0
使用另一种方法代替递归稍微好一点
|
![]() |
jkfe · 为什么println会在这段递归代码中执行? 3 年前 |
![]() |
Jimmy · 这种算法怎么能按顺序遍历树“爬上”树呢? 3 年前 |
![]() |
AvirukBasak · gcc中无return语句的尾部递归 3 年前 |
![]() |
Dharmik Patel · 使用python递归完全可以整除 3 年前 |
![]() |
W.tan · 一维最短距离递归算法 3 年前 |
![]() |
ncarrawa · 将1添加到i(递归)时出现类型错误 3 年前 |
![]() |
Eren · Python递归何时返回[duplicate] 3 年前 |