Eliseu M. 2 Denunciar post Postado Maio 12, 2010 Meus cumprimentos, pessoal. Estou fazendo curso técnico de programação e acabamos de aprender o FOR, WHILE e DO WHILE. O professor passou três exercícios sobre séries matemáticas, usando FOR: Fibonacci, Ricci e Fetuccine, vocês devem conhecer. Quando aprendemos progressões no colégio, é fácil pegar a posição do número, mas como fazer isso na programação? Fibonacci Os dois primeiros números são 1 e 1, e o resto é a soma dos dois anteriores. Imprima os 10 primeiros. Ricci Mesmo esquema da série de Fibonacci, porém os dois primeiros números são fornecidos pelo usuário (como saber onde o FOR vai parar?) Fetuccine (não encontro nada falando dele, só macarrão) É o seguinte... se o número for ímpar, ele faz a soma dos dois anteriores e, se for par, faz a subtração. Eu não sei se o professor está tirando sarro com esse Fetuccine, mas a lógica é essa aí. Falou! Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 12, 2010 Use contadores e variáveis auxiliares. Compartilhar este post Link para o post Compartilhar em outros sites
yagosansz 0 Denunciar post Postado Maio 13, 2010 Tpo, Eliseu...basicamente a de Fibonacci consiste na formula (n-1)+(n-2)... caiu uma questão dessa na prova de Informatica Fundamental a pouco tempo, e eu conseguiu desenrolar na hora, so nao sei se ta certo. Vo fazer em visualG, pra ve se te ajuda! algoritmo "Fibonacci" var n, i, soma: inteiro inicio leia(n) para i de 0 ate n passo 1 faca se i = 0 entao escreval (i) fimse se i = 1 entao escreval (i) fimse se i> 1 entao soma<- (i-1)+(i-2) escreval (soma) fimse fimpara fimalgoritmo agora eu to achando que acertei aqui e errei na prova :angry: :angry: Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 13, 2010 Isso não imprime a sequência de fibonacci: 0 1 1 3 5 7 9 11 13 15 17 O correto é 1 1 2 3 5 8 13 21 34 55 89 O teu conceito de sequência de fibonacci tem um erro de definição: p/ um inteiro N > 2, a função é F(N) = F(N-1) + F(N-2), e não (N-1)+(N-2) [F(1) = F(2) = 1]. unsigned int a = b = 1, c; unsigned int termos; scanf("%ud", &termos); unsigned int i; for(i=1; i<= termos; i++) { if (i < 3) { printf("1 "); } else { printf("%ud ", a+B); c = b; b = a+b; a = c; } } Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Maio 13, 2010 Eliseu, Fibonacci: /** * @param integer $i */ function fibonacci( $i ){ $sqrt5 = sqrt( 5 ); return ( 1 / $sqrt5 ) * ( pow( ( 1 + $sqrt5 ) / 2 , $i ) - pow( ( 1 - $sqrt5 ) / 2 , $i ) ); } Calculando os 10 primeiros números da sequencia: for ( $i = 0 ; $i < 10 ; ++$i ){ printf( "fibonacci(%d) => %d\n" , $i , fibonacci( $i ) ); } Saída: fibonacci(0) => 0 fibonacci(1) => 1 fibonacci(2) => 1 fibonacci(3) => 2 fibonacci(4) => 3 fibonacci(5) => 5 fibonacci(6) => 8 fibonacci(7) => 13 fibonacci(8) => 21 fibonacci(9) => 34 Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Maio 13, 2010 [MODO CHATO] João, a sua seqüência está certa, mas, apenas a título de melhor exemplificação, $i do loop for teria de ser inicialmente UM, para não mostrar o zero inicial. Mas, só de curiosidade, pra quê raiz quadrada de 5? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 13, 2010 Isso se chama fórmula de Binet, normalmente estudada em matemática discreta. Já teve um tópico estilo saga em Java sobre qual era o melhor modo de se calcular os números de fibonacci. Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Maio 13, 2010 apenas a título de melhor exemplificação, $i do loop for teria de ser inicialmente UM, para não mostrar o zero inicial. Como "melhor exemplificação" se 0 é o primeiro número da sequencia ??? fibonacci(n) = 0 http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Se n = 0 fibonacci(n) = 1 http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Se n = 1 fibonacci(n) = fibonacci( n - 2 ) + fibonacci( n - 1 ) http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Se n >= 2 Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 13, 2010 Quotando o exercício: FibonacciOs dois primeiros números são 1 e 1, e o resto é a soma dos dois anteriores. Imprima os 10 primeiros. http://mathworld.wolfram.com/FibonacciNumber.html Compartilhar este post Link para o post Compartilhar em outros sites
Eliseu M. 2 Denunciar post Postado Maio 19, 2010 Isso não imprime a sequência de fibonacci: 0 1 1 3 5 7 9 11 13 15 17 O correto é 1 1 2 3 5 8 13 21 34 55 89 O teu conceito de sequência de fibonacci tem um erro de definição: p/ um inteiro N > 2, a função é F(N) = F(N-1) + F(N-2), e não (N-1)+(N-2) [F(1) = F(2) = 1]. unsigned int a = b = 1, c; unsigned int termos; scanf("%ud", &termos); unsigned int i; for(i=1; i<= termos; i++) { if (i < 3) { printf("1 "); } else { printf("%ud ", a+B); c = b; b = a+b; a = c; } } Valeu cara, eu havia pesquisado sobre o assunto e encontrei uma solução muito parecida, aliás é igual. Obrigado a todos aí pelo help, deu um bom tópico XD Agora falta uns programinhas de 50 linhas... tô até vendo :P Falou! Compartilhar este post Link para o post Compartilhar em outros sites