J'essaye d'implémenter une fonction numérotée de nombre de Fibonacci, et je cours dans une erreur de compilation que je ne peux pas trier. Le code suivant est ce que j'ai jusqu'ici.Erreur de compilation Scala récursive fermeture
var fibs = Map.empty[Int, Int]
fibs += 0 -> 1
fibs += 1 -> 1
fibs += 2 -> 2
val fib = (n: Int) => {
if (fibs.contains(n)) return fibs.apply(n)
else{
// Error here
val result = fib(n - 1) + fib(n - 2)
fibs+= n -> result
return result
}
}
println(fib(100))
L'erreur est:
récursives
fib
besoins de type
J'ai essayé d'entrer un type de retour pour la fermeture en divers endroits, mais je ne peux pas sembler l'obtenir travailler.
Déclarer la fermeture comme val fib = (n: Int): Int => {
donne une erreur de compilation différente.
Pourriez-vous s'il vous plaît m'aider à corriger cette erreur de compilation?
Déclarant la fermeture comme 'val = fib (n: Int): Int => {' donne une erreur de compilation différente. – jjnguy
Aussi, merci pour l'entrée. – jjnguy
Je vous ai donné la syntaxe 'def'. Si vous voulez utiliser 'val' pour définir la fonction, vous devez lui donner un type comme vous le feriez normalement:' val fib: (Int => Int) = (n: Int) => {...} ' –