Ir para conteúdo

POWERED BY:

Arquivado

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

Matheus21

[Resolvido] Função recursiva

Recommended Posts

Bom, essa duvida veio depois de eu resolver o problema importante, mesmo assim nesse caso é uma parte importante...

 

Tinha que fazer uma função recursiva "ciclo", que no caso de o numero ser par ele é dividido por 2 (n / 2)e no caso de ser impar é multiplicado por 3 e somado a um (n * 3 + 1). A função deve retornar quantas operações foram feitas até que o numero passado pra ela seja um, e também todos os numeros obtidos em "ciclo". E então, na main, para k ocorrências de numeros executar a função ciclo para cada um desses k numeros.

 

Segue meu codigo:

 

 

#include <stdio.h>
#define MAX 100
int ciclo (int n) {
  printf ("%d ", n);
  if (n != 1) {
    if (n % 2 == 0) {
      return 1 + ciclo (n / 2);
    }
    else {
      return 1 + ciclo (n * 3 + 1);
    }
  }
  else {
    return 1;
  }
}
int main () {
  int n, k, i, v[MAX];
  scanf ("%d", &k);
  for (i = 0; i < k; i++) {
    scanf ("%d", &n);
    v[i] = n;
  }
  for (i = 0; i < k; i++) {
    printf ("%d\n", ciclo(v[i]));
  }
  return 0;
}

Porém eu tenho que entregar esse codigo ai num corretor automatico (BOCA) e lá está exigindo uma saída para a segunte entrada (exemplo) :

 

3

10

7

22

 

10 5 16 8 4 2 1
7
7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
17
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
16

 

E a saida que eu obtive:

 

3
10
7
22
10 5 16 8 4 2 1 7
7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 17
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 16

 

EDIT

 

Foi mal pessoal, suspende aqui descobri sozinho rs

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é a falta de newlines.

 

Sistemas de correção automática como o BOCA são bem rígidos (às vezes rígidos demais).

 

Bom saber que resolveu seu problema. No futuro, poste também a solução pra que o aprendizado fique registrado. Pode ajudar outras pessoas.

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.