遞迴函式理解

2021-10-17 14:25:02 字數 1752 閱讀 8633

**:

package algorithms.sort;

public

class

middlesplitbyrecursion

public

static

void

middlesplitbytworecursion

(int

a,int lo,

int hi)

public

static

void

main

(string[

] args)

;middlesplitbyonerecursion

(aa,

0, aa.length-1)

; system.out.

println()

;middlesplitbytworecursion

(aa,

0, aa.length-1)

;}}

輸出:

012

4013

2576

4

應用一例:歸併排序

**:

package algorithms.sort;

import algorithms.model.smethod;

//自底而上的歸併排序,是由底層小陣列片段對逐步有序到全部陣列有序。基本思想是歸併兩個短的有序陣列片段為乙個長度有序陣列片段。

//如何找到兩個有序的陣列片段呢?想到兩個分別含有乙個元素的陣列片段就是兩個有序陣列片段。然後不斷的歸併它們。

//如何找到分別只含有乙個元素的陣列片段呢?答案是對長陣列不斷地做兩兩切分,切分成很多層兩兩陣列片段,逐層陣列片段對越來越多,

//每對中的元素越來越少,直到每個陣列對中的每個陣列片段只含有乙個元素。然後對這一層的所有陣列片段對使用歸併排序進行合併排序。

//合併後,陣列對對減半,再合併該層減半的陣列對,每個陣列中的元素個數會加倍,重複此過程,直到返回到頂層,此時頂層已變成整個陣列切分成兩個

//有序的陣列對,然後最後一次使用歸併排序,使整個陣列有序。

class

merge

public

static

void

sort

(int

a,int lo,

int hi)

public

static

void

main

(string[

] args)

;merge

(b,0,3

,8);

for(

int i : b)

system.out.

print

(i +

" ")

; system.out.

println()

;int

a =

;sort

(a,0

,a.length-1)

;for

(int i : a)

system.out.

print

(i +

" ");}

}

輸出:

156

1213

1417

355612

3459

1111

71

遞迴函式理解

遞迴需要關注,每次遞迴達到的目的,包括影響了哪些全域性值,或者改變什麼全域性狀態 另外是輸入條件和邊界結束條件,輸入條件保證遞迴的輸入環境是否一致 結束條件,表明什麼時候結束,避免無限遞迴。最後是遞迴在函式中的位置,遞迴在函式開始,中間,末尾 遞迴函式在函式中不同的位置,影響點 1.函式前面部分對遞...

Python 遞迴函式 理解漢諾塔

python的遞迴函式 理解漢諾塔 利用遞迴函式移動漢諾塔 defmove n,a,b,c if n 1 print move a,c else move n 1,a,c,b 先把a號樁當做起點樁,b號樁當做終點樁,c號樁當做中間樁,移動a號樁上面n 1個盤子到b號樁 move 1,a,b,c 然後...

SetBkMode函式理解

輸出的字串時,發現存在背景色,這樣的輸出是破壞背景的。那需要使用什麼方法來保持背景不變,而又能輸出紅色的字串呢?比如按鈕的文字顏色是黑色的,而背景是灰色的。這就需要使用setbkmode函式來設定drawtext函式的輸出方式,顯示裝置共有兩種輸出方式 opaque和transparent。opaq...