我对Scala很新。我被分配了编码Fast Fibonacci算法的任务。在实际调用函数时,我发现很难。该函数采用2的元组,结果返回2的元组。我不知道我的fibStep逻辑是否正确,但是只要我能够真正测试该函数,我就会知道。以下是我到目前为止:
def fastFib(x: Long ): Long = {
def fibStep(x:(Long, Long)): (Long, Long) = {
//setting temporary variables a and b
def a = x._1
def b = x._2
//applying the fast Fibonacci algorithm
def c = a * (b * 2 - a)
def d = a * a + b * b
if (c+d % 2 == 0) return (c,d)
else return (d, c+d)
}
def tuple = (x-1,x-2)
return fibStep(tuple)
}
我需要将元组(x-1,x-2)传递给fibStep。我该怎么做?感谢
答案 0 :(得分:1)
问题出在return语句中。你试图返回元组,而不是Long。
修正:
def fastFib(x: Long ): Long = {
...
return fibStep(tuple)._1 // or ._2
}
注意:我不确定您的算法是否正确
答案 1 :(得分:0)
你在这里遇到了很多问题。
def
用于定义函数
val
应该用于定义变量
return
。你只是将它作为表达式中的最后一个值'返回'结果。
仅使用括号定义元组:
val myTuple = (1,2)
有了这些信息,你应该能够更好地尝试它。