Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 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;
}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!
Carregando comentários...