1. 程式人生 > 其它 >遞迴演算法1:程式碼對稱中間遞迴

遞迴演算法1:程式碼對稱中間遞迴

技術標籤: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)效果
在這裡插入圖片描述