Problema
Ver original (inglês)Comece com n. Se for par, divida por 2; se for ímpar, multiplique por 3 e some 1. Repita até que o valor seja 1. Inclua tanto o valor inicial quanto o 1 final na sua resposta.
Implemente collatz_sequence(n).
Entrada
n: O inteiro inicial positivo.
Saída
Retorne a sequência completa em ordem.
Restrições
1 ≤ n ≤ 10.000. Entradas nesse intervalo sempre chegam a 1 seguindo essa regra; todos os valores da sequência cabem em um inteiro assinado de 64 bits.
Exemplos
Entrada:
n = 6
Saída esperada:
expected = [6, 3, 10, 5, 16, 8, 4, 2, 1]
Entrada:
long long n = 6;
Saída esperada:
std::vector<long long> expected = {6, 3, 10, 5, 16, 8, 4, 2, 1};
Entrada:
long n = 6;
Saída esperada:
long[] expected = new long[] {6, 3, 10, 5, 16, 8, 4, 2, 1};
Explicação
6 é par, então vira 3. Depois, 3 vira 10. Continue aplicando a regra até chegar a 1.
Entrada:
n = 1
Saída esperada:
expected = [1]
Entrada:
long long n = 1;
Saída esperada:
std::vector<long long> expected = {1};
Entrada:
long n = 1;
Saída esperada:
long[] expected = new long[] {1};
Explicação
O valor inicial já é 1, então nenhuma transformação é necessária.
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.