遞迴演算法1:程式碼對稱中間遞迴
阿新 • • 發佈:2021-01-18
技術標籤:java
遞迴演算法1:程式碼對稱中間遞迴
下面兩個例子的遞迴思想是一樣的,很簡潔和有意思!
例子1:
(1)需求:一個整數,大於0,不用迴圈和本地變數,按照n,2n,4n,8n的順序遞增,當值大於5000時,把值按照指定順序輸出來(先遞增再遞減)
(2)程式碼
//方法 public static void getNum(int n){ //列印遞增的數 System.out.println(n); //遞迴呼叫 if(n<=5000){ getNum(2*n); } //列印遞減的數 System.out.println(n); } //測試程式碼 public static void main(String[] args) { getNum(1237); }
(3)效果
例子2:
(1)需求:輸入星星數打印出來對稱的直角三角形*
(2)程式碼:
//方法:a和b分別為星星最少的那行的星星數和星星最多的那行的星星數 public static void tri(int a, int b) { //列印三角形上半部分 //字元陣列預設初始值是'\0',因此以new char[2]為例:其兩個字元值均為'\0',轉換為字串後為"\0\0",用*取代\0,即可得** System.out.print(new String(new char[a]) .replace("\0", "*")); System.out.println(); //遞迴呼叫 if (a != b) { tri(a + 1, b); } //列印三角形下半部分 System.out.print(new String(new char[a]) .replace("\0", "*")); System.out.println(); } //測試程式碼 public static void main(String[] args) { tri(1,4); }
(3)效果