Ir para conteúdo

Arquivado

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

Guizera

Recursividade

Recommended Posts

Prezados,

 

Fiz o seguinte código aqui. Quero simplesmente fazer a soma dos vetores em recursividade.

 

O compilador não retorna erro, mas o valor não é mostrado também.

 

//Variáveis
int[] A;
int tamanho, i;

Console.WriteLine("Digite o tamanho do vetor:");// Ler tamanho do vetor
tamanho = int.Parse(Console.ReadLine());

A = new int[tamanho]; // Vetor recebe tamanho

for (i = 0; i < tamanho; i++) //For para digitar os elementos
{
   Console.WriteLine("Digite o elemento " + i + ":");
   A[i] = int.Parse(Console.ReadLine());
}

Console.WriteLine("Imprime Soma Vetores:");
imprimesoma(A, tamanho);

public static int imprimesoma(int[] A, int tamanho)
{
  return calculasoma(A, tamanho);
}

private static int calculasoma(int[] A, int indice) // Método imprimir por recursividade a soma do Vetor
{
   if (indice == 0)
       return 0;
   else
   {
       int s;
       s = calculasoma(A, indice - 1);
       if (A[indice - 1] > 0) s += A[indice - 1];
       return s;           
   }

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se o problema já foi resolvido, mas de qualquer forma, vou postar a solução do "problema".

Guizera, o que ocorre é que o método imprimesoma é chamado, mas ele apenas retorna o valor, não o imprime na tela.

 

Há duas maneiras de resolver isto: a primeira consiste em alterar a linha onde o método é chamado, de forma que o retorno seja impresso. Ou seja, o código está assim:

imprimesoma(A, tamanho);

E mudaria para:

Console.WriteLine(imprimesoma(A, tamanho)); // assim, imprimindo o valor retornado pelo método

 

Ou você pode alterar o método, fazendo com que ele imprima o resultado quando for chamado. Assim, o código passaria disso:

public static int imprimesoma(int[] A, int tamanho)
{
  return calculasoma(A, tamanho);
}

Para isso:

public static void imprimesoma(int[] A, int tamanho) // void pois não vai retornar nada, mas sim imprimir
{
  Console.WriteLine(calculasoma(A, tamanho)); // o Console.WriteLine faz com que o retorno do método seja impresso
}

 

Abraços ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.