演算法案例2-求冰雹數 java程式碼實現
介紹:
冰雹數
任意給定一 個正整數N,
如果是偶數,執行: N /2
如果是奇數,執行: N*3+1
生成的新的數字再執行同樣的動作,迴圈往復。
通過觀察發現, 這個數字會一會兒上升到很高,
一會兒又降落下來。
就這樣起起落落的,但最終必會落到"1"
這有點像小冰雹粒子在冰雹雲中翻滾增長的樣子。
例子
比如=9
9,28,14, 7,22,11,34,17, 52,26,13, 40,20,10,5,16,8,4,2,1
可以看到,N=9的時候,這個小冰雹“最高衝到了52這個高度。
分析:
這個演算法實現很簡單,只需要用if判斷一下奇偶數然後按照特定的算式進行計算即可
然後可以建立一個動態陣列進行排序 sort 最大的就是我們要得到的數
輸入格式:
一個正整數N (N<1000000)
輸出格式:
一個正整數,表示不大於w的數字,經過冰雹數變換過程中,最高衝到了多少。
例如,輸入: 10
程式應該輸出: 52
程式碼實現
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class solution {
public static void main(String[] args) {
//鍵盤錄入一個資料
Scanner sc = new Scanner(System.in);
int s = sc.nextInt();
//呼叫方法
bbs(s);
}
//建立一個動態陣列
public static ArrayList<Integer> li = new ArrayList<>();
public static void bbs(int n) {
int a = 0;
//遞迴終止條件
if(n == 1) {
//正序。由小到大
Collections.sort(li);
//逆序,由大到小
Collections.reverse(li);
//輸出這個集合
System.out.println(li);
//因為是逆序排序,所以最小的的索引值就是我們想要的
System.out.println(li.get(0));
return;
}
//執行要求
if(n%2 == 0) {
a = n/2;
}else {
a = n*3+1;
}
li.add(a);
//遞迴迴圈條件
bbs(a);
}
}
相關文章
- Java實現網路爬蟲 案例程式碼Java爬蟲
- Java實現 藍橋杯 演算法提高 八數碼(BFS)Java演算法
- K-Means演算法的程式碼實現(Java)演算法Java
- 搶紅包案例分析以及程式碼實現
- java演算法 求最大公約數Java演算法
- Java 8用函數語言程式設計實現集合操作案例Java函數程式設計
- 負載均衡的幾種演算法Java實現程式碼負載演算法Java
- 多種負載均衡演算法及其Java程式碼實現負載演算法Java
- 多種負載均衡演算法及其 Java 程式碼實現負載演算法Java
- Java實現Http請求JavaHTTP
- 資源 | 數十種TensorFlow實現案例彙集:程式碼+筆記筆記
- 微信小程式實現商城案例(賦原始碼)微信小程式原始碼
- 搶紅包案例分析以及程式碼實現(四)
- 搶紅包案例分析以及程式碼實現(三)
- 搶紅包案例分析以及程式碼實現(二)
- 求一個數的二進位制數中所含1的個數的程式碼實現
- 求取眾數及重數的演算法實現(Java)演算法Java
- jQuery心得4--jQuery案例剖析2-開發實用案例jQuery
- java實現https請求JavaHTTP
- 集合框架-統計字串中每個字元出現的次數案例程式碼實現框架字串字元
- java實現有理數分數相關計算(淺度拷貝)案例Java
- java 橋接模式實現程式碼Java橋接模式
- Python求10個數的平均數實戰案例講解!Python
- 感知機演算法(PLA)程式碼實現演算法
- ajax實現的跨域請求程式碼例項跨域
- jQuery實現的非同步請求程式碼例項jQuery非同步
- $.getJSON()實現跨域請求程式碼例項JSON跨域
- c++實現求眾數及其重數C++
- Canvas實現放大鏡效果完整案例分析(附程式碼)Canvas
- 求一個java程式碼生成工具Java
- JAVA的六大經典演算法,程式碼案例簡化分析Java演算法
- 求1+2+...+n(Java實現)Java
- 十大經典排序演算法動畫解析和 Java 程式碼實現排序演算法動畫Java
- 幾種簡單的負載均衡演算法及其Java程式碼實現負載演算法Java
- mybatis實現變數定義,實現sql業務程式碼MyBatis變數SQL
- 隨機快速排序Java程式碼實現隨機排序Java
- 雜湊表的程式碼實現(Java)Java
- Java程式碼實現下載檔案Java