[Resolvido] Função recursiva
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!
Discussão (1)
Carregando comentários...