发布网友 发布时间:2024-09-27 18:26
共2个回答
热心网友 时间:2024-10-03 09:15
/**
* 冰雹数字是指一系列正整数,其升降幅度非常类似于降落到地面之前的云中冰雹。计算该数列中第 (i+1) 项的方法是:若第 (i) 项的值为偶数,则将其除以 2
* 即为第 (i+1) 项的值,否则用第 (i) 项的值乘以 3 再加 1 即为第 (i+1) 项的值。例如从“3”开始,将生成数列 [3 10 5 16 8
* 4 2 1]。当出现冰雹数字“1”时,该数列将终止,因为该值将进入循环 [1 4 2 1]
*
* @author Administrator
*
*/
public class TestBinbao {
public static void main(String[] args) {
int firstInt = (int) (Math.random()*10000);
System.out.println("firstInt = "+firstInt);
for (Integer i : getBinBao(firstInt)) {
System.out.println(""+i);
}
System.out.println("end");
}
public static List<Integer> getBinBao(int firstInt) {
List<Integer> list = new ArrayList<Integer>();
list.add(firstInt);
addNextBinBaoInt(list, firstInt);
return list;
}
private static void addNextBinBaoInt(List<Integer> list, int firstInt) {
if(firstInt == 1){
return;
}
int next = 0;
if (firstInt % 2 == 0) {// 偶数
next = firstInt/2;
} else {// 奇数
next = firstInt * 3 + 1;
}
list.add(next);
addNextBinBaoInt(list, next);
}
}
热心网友 时间:2024-10-03 09:15
Random r = new Ramdom();
int i = r.nextInt(10);
int[] array;
array[0] = i;
for(int x=0;x<10;x++){
if(i%2==0){
array[x+1]=i/2;
}else{
array[x+1]=array[x]*3+1;
}
}
array为数量为10的冰雹数列