如何算出冰雹序列的次数

设一个数n
当n为偶数时n/2
当n为奇数时3n+1
直到最后为1
例如n=3
得到3,10 5, 16, 8, 4, 2, 1
或n = 12
得到12, 6, 3, 10, 5, 16, 8, 4, 2, 1
但结果要是这个数列的长度
如输入3 得到8
输入12 得到10
刚刚入门

import java.util.Scanner;

class App {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int count = 1;
        while (n != 1) {
            if (n % 2 == 0)
                n /= 2;
            else
                n = 3 * n + 1;
            count++;
        }
        System.out.println(count);
        scanner.close();
    }
}

码风丑,请见谅

#include <bits/stdc++.h>

using namespace std;

int n,cnt;

int main()
{
    cin>>n;
    cnt=1;//n本身也算一个
    while (n!=1)
    {
        cnt++;
        if(n%2==0) n/=2; //偶数
        else n=3*n+1; // 奇数
        cout<<n<<endl;
    }
    cout<<cnt<<endl;
    return  0;
}

自己想想就能写出来啊,我觉得这个问题并不难啊