2011-12-04 6 views
1

Je commence un "nouvel" algorithme de Fibonacci, mais cela ne fonctionne pas. Il est très simple:Fibonacci haskell

--fiblista 0 n = [0] 
    --fiblista 1 n = [1] 
    fiblista a n 
     | a <= n = (0:1:tail, ((fiblista!!d)+(fiblista!!c))) fiblista a+1 n 
     where d = a - 1 
       c = a - 2 

Exemple:

http://dl.dropbox.com/u/27560194/example.png

premier code d'erreur: parse error sur l'entrée `= »

Toute idée comment résoudre cet algorithme? J'ai lu des milliers d'exemples d'algorithme de Fibonacci en haskell, mais j'ai besoin d'en écrire un nouveau.

+0

Pourriez-vous expliquer votre approche? Il y a tellement d'erreurs de syntaxe et de type ici que j'ai du mal à voir comment vous voulez que cela fonctionne. – hammar

Répondre

4

Votre indentation est erronée. Essayez:

fiblista 0 n = [0] 
fiblista 1 n = [1] 
fiblista a n 
    | a < n = (tail, ((fiblista!!d)+(fiblista!!c))) fiblista a+1 n 
    where d = a - 1 
     c = a - 2 

Mais ce code ne sera toujours pas compilé. fiblista est une fonction avec deux paramètres, mais vous essayez également de l'utiliser comme une liste. Vous essayez également d'utiliser un tuple en tant que fonction.

Si vous êtes encore en train d'écrire votre fonction, il serait utile de décrire les paramètres à fiblista, et ce qu'il devrait retourner. Inclure une signature de type.

Est-ce que ce sont les devoirs?


So.

fiblista a n est une liste de nombres de Fibonacci, en commençant par le une nombre de Fibonacci, et se terminant avec la (n -1) e nombre de Fibonacci.

Ceci est une question de liste.

Imagine you had a list of all the Fibonacci numbers. (Ce serait le même que fiblista 0 ∞, si était une valeur Haskell valide.) Vous seriez alors en mesure d'utiliser les fonctions de liste standard take et drop pour calculer fiblista a n.

+0

Merci la réponse, un signifie le nombre de fibonacci un, le n est le dernier nombre de fibonacci, la fonction devrait retourner une liste avec n nombre de fibonacci. pas de devoirs juste apprendre Haskell avec mon propre chemin. Ma question précédente est une question de devoirs ce n'est pas. – flatronka

+1

Que voulez-vous dire par le "dernier" numéro Fibonacci? Comment la sortie 'fiblista' dépend-elle de' a'? S'il vous plaît décrire ce que votre fonction devrait retourner sur les entrées générales précisément. – Prateek

+0

Exemple: http://dl.dropbox.com/u/27560194/example.png mon idée. – flatronka