如何用Scala编程计算前n项和Sn(S_n = 1 + 2 + 3 + ... + n)?请给出一个实现代码,并计算当n等于130时的和是多少
时间: 2025-01-23 21:14:23 浏览: 32
在Scala中,可以使用高阶函数和递归来实现计算前n项和的功能。下面是一个简单的实现代码,并计算当n等于130时的和:
```scala
object SumCalculator {
def sum(n: Int): Long = {
if (n <= 0) 0
else n + sum(n - 1)
}
def main(args: Array[String]): Unit = {
val n = 130
val result = sum(n)
println(s"The sum of the first $n terms is: $result")
}
}
```
在这个实现中,`sum`函数使用递归的方式计算前n项和。当n等于130时,运行结果如下:
```
The sum of the first 130 terms is: 8515
```
需要注意的是,当n较大时,递归可能会导致栈溢出。因此,可以使用尾递归优化来避免这种情况。Scala支持尾递归优化,可以在函数上添加`@tailrec`注解来确保尾递归优化。
以下是使用尾递归优化的实现:
```scala
object SumCalculator {
def sum(n: Int): Long = {
@annotation.tailrec
def sumTailrec(current: Int, accumulator: Long): Long = {
if (current <= 0) accumulator
else sumTailrec(current - 1, accumulator + current)
}
sumTailrec(n, 0)
}
def main(args: Array[String]): Unit = {
val n = 130
val result = sum(n)
println(s"The sum of the first $n terms is: $result")
}
}
```
在这个实现中,`sumTailrec`函数是尾递归的,`@annotation.tailrec`注解确保了尾递归优化。当n等于130时,运行结果与之前相同:
```
The sum of the first 130 terms is: 8515
```
阅读全文
相关推荐















