Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
/applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/seta.gif&key=e2d72b30771339c36df1f88688ecc571784dab60a19e2c7c2ff398c277802ac0" alt="Imagem Postada" /> Fibonacci
Os dois primeiros números são 1 e 1, e o resto é a soma dos dois anteriores. Imprima os 10 primeiros.
/applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/seta.gif&key=e2d72b30771339c36df1f88688ecc571784dab60a19e2c7c2ff398c277802ac0" alt="Imagem Postada" /> 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?)
/applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/seta.gif&key=e2d72b30771339c36df1f88688ecc571784dab60a19e2c7c2ff398c277802ac0" alt="Imagem Postada" /> 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!
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:
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;
}
}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[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?
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.
>
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
Quotando o exercício:
>
/applications/core/interface/imageproxy/imageproxy.php?img=../../../public/style_emoticons/default/seta.gif&key=522958b1b01cc621311cede5c16e40ca33d2abadf208e8f43f4045c50fe29ab1" alt="seta.gif" /> FibonacciOs dois primeiros números são 1 e 1, e o resto é a soma dos dois anteriores. Imprima os 10 primeiros.
>
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!
Use contadores e variáveis auxiliares.