【发布时间】:2018-02-07 18:33:39
【问题描述】:
我是 Scala 的初学者,我正在尝试解决与此类似的问题。
https://www.geeksforgeeks.org/maximum-difference-between-two-elements/
我已经编写了该站点中编写的代码的 Scala 版本。这是我的代码:
object stock{
def getMaxP(Li:List[Int]):Int={
var max_diff=Li(1)-Li(0)
var min_ele=Li(0)
for(i<-0 until Li.length){
if(Li(i)-min_ele>max_diff) max_diff=Li(i)-min_ele
if(Li(i)<min_ele) min_ele=Li(i)
}
max_diff
}
def main(args:Array[String]){
val li=List(10, 7, 5, 8, 11, 9)
println(getMaxP(li))
}
}
上面的代码有效。但我想使用递归来解决它,我更喜欢使用 listname.tail 函数。我可以将 s_p_y.tail 传递给递归函数(因为 s_p_y 是一个列表)并解决它,但我不知道如何实现。
这是我在网上找到的一个示例代码,它使用递归来查找最大元素。
def max2(ints: List[Int]): Int = {
@tailrec
def maxAccum2(ints: List[Int], theMax: Int): Int = {
if (ints.isEmpty) {
return theMax
} else {
val newMax = if (ints.head > theMax) ints.head else theMax
maxAccum2(ints.tail, newMax)
}
}
maxAccum2(ints, 0)
}
}
【问题讨论】:
-
哇,这很难读!神秘的名字,下划线,没有缩进。
-
编辑了问题,使其更具可读性。
-
3 个闭合的花括号,中间没有一个开口,在相同的 x 位置上不是缩进。表达式之间的空格也有助于阅读。但迈出了第一步。