資料結構 遞迴求數字旋轉方陣

2021-09-01 06:04:26 字數 953 閱讀 5170

注意觀察a、b、c、d四個區域(有顏色的區域)。

void fillinnum(int number, int begin, int matrixsize)

// 從數字number開始填寫, 例如從1開始填寫;

// matrixsize為n維方陣,第乙個填充的左上角的下標為(begin, begin)

**如下:

#include

int a[37]

[37],i,j,k,n;

void

fillinnum

(int number,

int begin,

int matrixsize)

for(k=

1;k< matrixsize;k++

,i++

) a[i]

[j]=number++

;for

(k=1

;k< matrixsize;k++

,j++

) a[i]

[j]=number++

;for

(k=1

;k< matrixsize;k++

,i--

) a[i]

[j]=number++

;for

(k=1

;k< matrixsize;k++

,j--

) a[i]

[j]=number++

;return

fillinnum

(number,

++begin,matrixsize-2)

;}void

print()

}int

main()

優化後的正確的主函式**如下:

int

main()

資料 結構 遞迴

遞迴不一定非要像斐波拉契數列一樣在return中呼叫函式 遞迴的結束條件就是初始條件值 通常的方法將遞迴呼叫放在if語句中 n!通過遞迴實現 常用方法還是通過while實現 def jiecheng n if n 0 return 1 else sum n jiecheng n 1 右邊只有階乘表示...

資料結構 遞迴

所謂遞迴,就是在乙個函式,過程,或者資料結構的內部,又直接或間接出現定義本身的應用。在以下三種情況中,常常使用遞迴。比如階乘函式,我們能夠將其分解成幾個小問題來求解,比如求5!我們可以先求4!想求4!先求3!這樣一步步使問題簡化的方法,稱之為分治法。採取分治法求解,需要滿足下面三個條件 1.能夠將乙...

資料結構 遞迴

最近開始學習王爭老師的 資料結構與演算法之美 通過總結再加上自己的思考的形式記錄這門課程,文章主要作為學習歷程的記錄。遞迴是一種非常高效 簡潔的編碼技巧,一種應用非常廣泛的演算法,比如dfs深度優先搜尋 前中後序二叉樹遍歷等都是使用遞迴。基本上所有的遞迴問題都可以用遞推公式來表示。以尋找電影排數為例...