Você está na página 1de 2

3.A srie de Fibonacci 0,1,1,2,3,5,8,13,21,...

inicia com 0 e 1 e tem a proprieda de de que cada nmero de Fibonacci subsequente a soma de dois nmeros que o precedem . A srie ocorre na natureza e, em particular, descreve uma forma de espiral. A relao entre os nmeros sucessivos de Fibonacci converge para um valor constante de 1,618...Esse nmero tambm ocorre na natureza e foi chamado de relao urea ou mdia urea. Os seres humanos tendem a achar a mdia urea esteticamente agradvel. Os arquitetos frequentemente projetam janelas, salas e edifcios cuja relao entre co mprimento e largura a relao urea. Os cartes postais frequentemente so projetados com uma relao entre compriment/largur a igual relao urea. A srie de Fibonacci pode ser definida recursivamente como: fibonacci(0) = 0 fibonacci(1)=1 fibonacci(n) = fibonacci(n-1) + fibonaccin(n-2) Escreva uma funo, que receba como parmetro um nmero inteiro n, calcule recursivam ente o nmero de fibonacci correspondente e retorne esse nmero. depois escreva um a funo main, em um loop que ler nmeros inteiros e depois chame a funo fibonacci, qua ndo o nmero for negativo sai do loop. Para testar entre com os nmeros 0,1,2,3,4,5,6,7,8,9,10,20,30,40, 50, 60, 70, 80, 90 e 100.. O que voce notou com o tempo de resposta ? */ #include <stdio.h> #include <stdlib.h> #include <conio.h> // Declarao da funo fibonacci int fibonacci (int num); int main () { //Aqui, declaramos as variveis "num" (que armazenar o valor digitado pelo usurio) e "res" (que receber o nmero de fibonacci) int num, res; printf("\t\t\t #-- Questao 03 --#\n\n");//Pedimos ao usurio que entre com o p rimeiro nmero, para que possa ser comparado no lao a seguir printf ("\nInsira um numero inteiro. Para encerrar, digite um numero negativ o: "); scanf ("%d", &num); //Armazenamos o valor no endereo "num" while (num>=0)//Este o lao que calcula o nmero de fibonacci. Caso o nmero f ornecido seja maior que zero, o lao iniciar. Caso contrrio, o loop no ser iniciado e o programa encerrar { res=fibonacci(num);//Invocao da funo "fibonnaci" e o seu retorno arm azenado na varivel "res" printf("==>Numero de Fibonacci que esta na posicao %d: %d\n", nu m, res); //Impresso do resultado da operao printf ("\nInsira um numero inteiro. Para encerrar, digite um nu mero negativo: ");//Novamente, pedimos ao usurio que digite um nmero inteiro. Cas o o nmero seja positivo, o lao repetir scanf ("%d", &num);//Armazenamento do valor digitado pelo usurio no endereo "num" } printf("\nVoce digitou um numero negativo, portanto o programa encerrara'\n\n");

getch(); return 0; } int fibonacci (int num)//Definio do corpo da funo "Fibonacci" { int fib;//Declarao da varivel "fib", que armazenar o valor da operao if (num==0)//As nicas condies exigidas na questo. Caso o nmero digitado seja igual a zero return 0; //O valor retornado para a main ser zero if (num==1)//Caso o nmero digitado pelo usurio seja igual a 1 return 1; //O retorno para a funo main ser igual a 1 //Caso o nmero digitado for diferente de zero ou um. As seguintes operaes s ero realizadas else{ fib=fibonacci(num-1)+fibonacci(num-2);//Clculo do valor desejado atravs do mtodo de recursivadade return fib;//Aqui retornamos o valor que est em "fib" para a main } } // Quanto maior o nmero inserido, mais demorado o tempo de resposta do programa

Você também pode gostar