每次调用一个函数时,如果给定的一组参数值的结果尚未被记忆,我想将结果放入内存表中.一列用于存储结果,另一列用于存储参数值.
我该如何最好地实现这一点?争论的种类繁多,包括一些枚举.
在C#中,我通常使用DataTable.Scala中有同等的东西吗?
我试图了解如何将各种递归函数转换为尾递归。我浏览了斐波那契和阶乘转换为尾递归的许多示例,并理解了这些示例,但是在艰难地过渡到结构有些不同的问题时,我遇到了困难。一个例子是:
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)
您如何将其转换为尾递归实现?
我已经看过类似的问题,例如: 将普通递归转换为尾递归, 但是这些似乎并没有转化为这个问题。
我正在尝试定义一个过程,该过程采用一列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)
我该如何解决这个问题?
谢谢.