我想在Scala中编写一个函数,它接受两个整数,并在这两个整数的包含范围内对每个值的立方数求和。
例如,我打电话给:
sumCubes(0,2)
我必须得到 9 的结果,因为(0 ^ 3 + 1 ^ 3 + 2 ^ 3)= 9。
我必须使用range
方法并考虑此模板:
def sumCubes2(x: Int, y: Int)= {
@annotation.tailrec
def fAux(acc: Int,xs: List[Int]): Int= ???
???
}
我考虑过创建一个列表,其中包含两个整数范围内的元素和另一个包含最终结果的变量:
var rangeList = List.range(x, y)
var finalValue = 0
现在我不知道是否应该使用for循环或以某种方式递归调用函数fAux。
答案 0 :(得分:4)
可以使用您的模板完成:
(x to y).fold(0){case (a,b) => a + b*b*b}
但这更有意义:
d = {}
with open('file.txt') as file:
for line in file.readlines():
key, value = line.split()
d[key] = int(value)
print(d)
答案 1 :(得分:1)
怎么做呢,无论如何我都不知道map函数是否针对tail recursion
进行了优化:
(a to b).map(x=>x*x*x).sum
scala> (0 to 2).map(x=>x*x*x).sum
res160: Int = 9
scala> (2 to 5).map(x=>x*x*x).sum
res161: Int = 224
scala>