Roku 0 #1 Posted May 22, 2010 (edited) function fibonacci(n) if n < 2 then return n else return fibonacci(n-2) + fibonacci(n-1) end end Para quem ainda tem duvidas em relação a recursividade. Edited January 23, 2011 by Mickfern Share this post Link to post Share on other sites
Roku 0 #3 Posted May 22, 2010 a sequencia de fibonacci é uma sequencia numérica na qual um numero tem o valor da soma de deus dois ascendentes. foi criada pelo matematico arcaico Leonardo de Pisa esse script gera numeros dela. se alguem quiser, eu tenho um que retorna assim: fib = {1,1,2,3,5,8,13} ai vc coloca qnts campos quer Share this post Link to post Share on other sites
Mock 32 #4 Posted May 22, 2010 (edited) Roku pegar dos lua examples nao vale ^^ ---no lua examples. fib.lua -- fibonacci function with cache -- very inefficient fibonacci function function fib(n) N=N+1 if n<2 then return n else return fib(n-1)+fib(n-2) end end vc ainda foi e mudo o nome da funçao function fibonacci(n) ---q? if n < 2 then return n else return fibr(n-2) + fibr(n-1) -- nil? end end Prefiro o meu function math.fibonnaci(maxvar) local old,now = 1,1 local lista = {0,old,now} while 1 do old, now = now, old+now lista[#lista+1] = now if now >= maxvar then return lista end end end print(unpack(math.fibonnaci(1000))) > 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 Edited January 23, 2011 by Mickfern Share this post Link to post Share on other sites
Roku 0 #5 Posted May 22, 2010 caralho nem vi que tinha isso no lua examples na verdade nao sei o que são lua examples meu irmao fez a mtooooooo tempo desculpem pelo engano nao sabia que ja tinha um quase igual vo achar um melhor q eu tenho aki e posto pra vcs Share this post Link to post Share on other sites
Kaotar 5 #6 Posted May 23, 2010 Velho mas a sua nem funciona... Share this post Link to post Share on other sites
Dean 1 #7 Posted May 23, 2010 Você mudou o nome da função então em vez de retornar ela mesma retorna uma função nula. Share this post Link to post Share on other sites
Roku 0 #8 Posted May 23, 2010 verdade. nem notei é pq meu irmao fez uma fib e otra fibr a segunda é mais completa q a primeira. a primeira é essa, mas so prolonguei o nome um pokinho. obrigado pela correção. Share this post Link to post Share on other sites
Mock 32 #9 Posted May 23, 2010 roku. seu irmao pegou isso pronto. ta exatamente igual a do example Share this post Link to post Share on other sites
ushoriuma 0 #10 Posted May 31, 2010 mock a sua ta errada, comeca com 1 e nao com 0 todo lugar q vejo falano da sequencia fibo ta falano q comeca com 1 x.x function fibo(x) local a,b,c,d = 0,1,0,0 while d < x do c = a + b b = a a = c print© d = d + 1 end end fibo(5) retorna 1,1,2,3,5 xD Share this post Link to post Share on other sites
Roku 0 #11 Posted May 31, 2010 /\ axo q n pense bem 0+ 1 = 1 ai depois 1 + 1 = 2 só q tem uma quebra no começo, uma exeção, digamos. @mock ele nao copiou, pense bem: esse modo é o mais simples, entao, muitas pessoas fazem assim. ele nao mexe com lua, e sim com C, ele nao tem lua examples, nem eu. na pior das hipoteses, ele ja viu. e isso eu duvido muito. sem falar que a função nao tá exatamente igual. Share this post Link to post Share on other sites
Baxnie 8 #12 Posted May 31, 2010 Recursividade não é muito legal quando se quer um valor muito alto. Share this post Link to post Share on other sites
Iago Felipe 5 #13 Posted May 31, 2010 /\axo q n pense bem 0+ 1 = 1 ai depois 1 + 1 = 2 só q tem uma quebra no começo, uma exeção, digamos. @mock ele nao copiou, pense bem: esse modo é o mais simples, entao, muitas pessoas fazem assim. ele nao mexe com lua, e sim com C, ele nao tem lua examples, nem eu. na pior das hipoteses, ele ja viu. e isso eu duvido muito. sem falar que a função nao tá exatamente igual. FAILMAN :fail: Talves ele não tenha copiado, foi mesmo um engano, coincidencia, tem pessoas que fazemdo mesmo jeito. Mais o Roku a sua parece não funcionar e a do mock n ta igual a do roku, seila. eu n entendo mto de script, mais entendi oq o mock quis dizer. KOSAPKSAO Share this post Link to post Share on other sites
Mock 32 #14 Posted May 31, 2010 @ushoriuma ah nem vi vlw ai @Roku ele pdoe nao ter copiado mais que fico igual ficou o0 Share this post Link to post Share on other sites
Socket 0 #15 Posted June 1, 2010 (edited) O meu é mais chique: function fib(n,last,atual) return function() t = (t or 1)+1 last, atual = last or 1, atual or 0 lastn, atualn = last, atual last, atual = atual, atualn + lastn if t <= n+1 then return lastn+atualn end end end for i in fib(1000) do print(i) end O maior valor que Lua retorna sem bugar é 72723460248141, pois o próximo seria 44945570212853 + 72723460248141, o que já buga em lua. EDIT: Pensei que o meu tinha ficado umas 3x maior que o do Mock, fico do mesmo tamanho Edited June 1, 2010 by Socket Share this post Link to post Share on other sites
ushoriuma 0 #16 Posted June 2, 2010 roku a minha ta certinha testa aew p vc v! Share this post Link to post Share on other sites