scala定义递归方法,求某个整数的阶乘的和! 例如求6的阶乘的累加和:6! +5! + 4! +3! +2! + 1!调用方法,传入实参6,打印出结果!
时间: 2023-12-07 20:38:23 浏览: 121
以下是Scala定义递归方法,求某个整数的阶乘的和的代码实现:
```scala
object Test {
def main(args: Array[String]): Unit = {
val n = 6
val sum = (1 to n).map(fact(_)).sum
println(s"$n 的阶乘的累加和为:$sum")
}
// 递归实现计算阶乘
def fact(n: Int): Int = {
if (n == 0) 1
else fact(n - 1) * n
}
}
```
运行结果为:
```
6 的阶乘的累加和为:873
```
相关问题
scala求6的阶乘的累加和:6! + 5! +4! +3! +2! + 1!调用方法,传入实参6:,打印出结果
以下是Scala求6的阶乘的累加和的代码:
```scala
def factorial(n: Int): Int = {
if (n == 0) 1 else n * factorial(n - 1)
}
val sum = (1 to 6).map(factorial).sum
println(sum)
```
输出结果为:873。解释如下:
- 首先定义了一个递归函数factorial,用于计算n的阶乘。
- 然后使用map方法将1到6的每个数都传入factorial函数中计算阶乘,得到一个新的列表。
- 最后使用sum方法对新列表中的所有元素求和,得到累加和。
scala编写一个递归方法,求整数n关于2的幂次和函数f)
以下是一个递归方法,求整数n关于2的幂次和函数f:
```scala
def f(n: Int): Int = {
if (n < 2) n
else {
val pow = math.floor(math.log(n) / math.log(2)).toInt
math.pow(2, pow).toInt + f(n - math.pow(2, pow).toInt)
}
}
```
该方法的思路是,先找到小于等于n的最大的2的幂次数,然后将其加入结果中,再递归计算剩余部分。如果n小于2,直接返回n。
例如,f(10) 的计算过程如下:
1. 找到小于等于10的最大的2的幂次数,即 2^3 = 8。
2. 将8加入结果中,计算剩余部分,即 f(10 - 8) = f(2)。
3. 找到小于等于2的最大的2的幂次数,即 2^1 = 2。
4. 将2加入结果中,计算剩余部分,即 f(2 - 2) = f(0)。
5. n = 0,直接返回0。
6. 将结果相加,得到 f(10) = 8 + 2 + 0 = 10。
注意,该方法只能计算正整数n的幂次和,如果n为负数或0,将会进入无限递归。
阅读全文
相关推荐
















