相关疑难解决方法(0)

在Scala中用于存储内存中可变数据表的类型是什么?

每次调用一个函数时,如果给定的一组参数值的结果尚未被记忆,我想将结果放入内存表中.一列用于存储结果,另一列用于存储参数值.

我该如何最好地实现这一点?争论的种类繁多,包括一些枚举.

在C#中,我通常使用DataTable.Scala中有同等的东西吗?

scala memoization data-structures scala-collections

20
推荐指数
2
解决办法
9113
查看次数

通过多个递归调用将普通递归转换为尾递归

我试图了解如何将各种递归函数转换为尾递归。我浏览了斐波那契和阶乘转换为尾递归的许多示例,并理解了这些示例,但是在艰难地过渡到结构有些不同的问题时,我遇到了困难。一个例子是:

def countSteps(n: Int): Int = {
  if(n<0) return 0
  if(n==0) return 1
  countSteps(n-1) + countSteps(n-2) + countSteps(n-3)
}
Run Code Online (Sandbox Code Playgroud)

您如何将其转换为尾递归实现?

我已经看过类似的问题,例如: 将普通递归转换为尾递归, 但是这些似乎并没有转化为这个问题。

algorithm recursion scala tail-recursion

4
推荐指数
1
解决办法
1153
查看次数

java.lang.StackOverflowError /// Pascal的三角形

我正在尝试定义一个过程,该过程采用一列c和一行r,从中计算0并返回三角形中该点的数字:

def pascal(c: Int, r: Int): Int = {
    if (c <= 0) 1
    else
        println(pascal(r, c-1) * (r-c)/c)
        pascal(r, c-1) * (r-c)/c
}
Run Code Online (Sandbox Code Playgroud)

当我运行我的代码时:

>>>pascal(1,3) 
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

pascal: (c: Int, r: Int)Int
java.lang.StackOverflowError
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

谢谢.

scala

2
推荐指数
1
解决办法
3772
查看次数