算法----冰雹序列

Posted on 2019-01-07 16:00  罐装的天才  阅读(556)  评论(0)    收藏  举报

冰雹数

任意给定一个正整数N

如果是偶数,执行: N / 2

如果是奇数,执行: N * 3 + 1

生成的新的数字再执行同样的动作,循环往复。

通过观察发现,这个数字会一会儿上升到很高, 一会儿又降落下来。 就这样起起落落的,但最终必会落到“1” 这有点像小冰雹粒子在冰雹云中翻滚增长的样子。

package Hailstone ;

public class Hailstone {
    //计算冰雹猜想的长度
    //一个数,若n为奇数,则n=3n+1;若n为偶数,则n=n/2
    public static void main(String[] args) {
        System.out.println(function(27));
    }
    public static int function(int n) {
        int length = 1;
        while(n>1) {
            n= (n%2==0)?n/2:3*n+1;
            length++;
        }
        return length;
    }
}