Ir ao conteúdo

Preciso criar um código recursivo para encontrar a ordem "n" da série de Fibonacci.


jessicalb

Posts recomendados

Postado

Estou tentando de várias formas mas até agora não consegui nada que o Visual Studio rodasse. As instruções são as seguintes:

Encontrar o número de ordem N na série de Fibonacci. Dados: Fibo(0) = 1; Fibo(1) = 1;

fibo(2) = 2; Fibo(3) = 3; Fibo(4) = 5 ... Fibo(N) = Fibo(N-1) + Fibo (N-2), para N >=2.

O código que criei:


using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
public static int fibonacci (int n)
{
if (n == 0)
return 1;
if (n == 1)
return 1;
if (n == 2)
return 2;
if (n == 3)
return 3;
if (n == 4)
return 5;
else
return fibonacci (n - 1) + fibonacci (n - 2);
}//fim função recursiva

static void Main(string[] args)
{
Program p = new Program();
int n;
Console.WriteLine("Posição na sequencia Fibonacci:");
n = int.Parse(Console.ReadLine());
Console.WriteLine("Termo: " + p.fibonacci(n)); //O Visual Studio acusa erro nessa linha
Console.Read();
}
}
}

Se alguém puder me ajudar nisso, ficarei agradecida! =]

Postado

Olá,

Como a sua dúvida é referente à linguagem C#, sugiro que peça para um moderador mover o tópico para a área correta (.NET).

Quanto ao seu problema, ele ocorre pois a função para cálculo da sequência de Fibonacci é definida como static, ou seja, não precisa ser criada uma instância de Program para que ela possa ser chamada, bastando chamá-la da seguinte forma:


Program.fibonacci(n);

Outra coisa, como a seguência de Fibonacci depende somente do resultado da sequência para os 2 elementos anteriores, você pode definir na função para que retorne 1 quando o valor de n for 0 ou 1. Para os outros casos basta fazer a chamada recursiva.

Segue o código corrigido:


namespace Fibonacci
{
class Program
{
public static int fibonacci(int n)
{
if (n == 0 || n == 1)
{
return 1;
}
else
{
return fibonacci(n - 1) + fibonacci(n - 2);
}
}

static void Main(string[] args)
{
int n;
Console.WriteLine("Posição na sequencia Fibonacci:");
n = int.Parse(Console.ReadLine());
Console.WriteLine("Termo: " + Program.fibonacci(n));
Console.Read();
}
}
}

Espero ter ajudado.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!