問題
原文(英語)を表示n から始めます。n が偶数なら 2 で割り、奇数なら 3 を掛けて 1 を足します。この操作を値が 1 になるまで繰り返してください。開始値と最後の 1 の両方を答えに含めてください。
collatz_sequence(n) を実装してください。
入力
n: 正の開始整数。
出力
数列全体を順番通りに返してください。
制約
1 ≤ n ≤ 10,000。 この範囲の入力は必ずこの規則で 1 に到達します。数列中のすべての値は符号付き64ビット整数に収まります。
例
例 1
入力:
n = 6
期待される出力:
expected = [6, 3, 10, 5, 16, 8, 4, 2, 1]
入力:
long long n = 6;
期待される出力:
std::vector<long long> expected = {6, 3, 10, 5, 16, 8, 4, 2, 1};
入力:
long n = 6;
期待される出力:
long[] expected = new long[] {6, 3, 10, 5, 16, 8, 4, 2, 1};
解説
6 は偶数なので 3 になります。次に 3 は 10 になります。この規則を 1 になるまで繰り返します。
例 2
入力:
n = 1
期待される出力:
expected = [1]
入力:
long long n = 1;
期待される出力:
std::vector<long long> expected = {1};
入力:
long n = 1;
期待される出力:
long[] expected = new long[] {1};
解説
開始値がすでに 1 なので、変換は必要ありません。
参考資料
この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。