藍橋杯 遞迴原理與構造技巧 一

2021-08-17 22:49:42 字數 1712 閱讀 8628

遞迴:將規模較大的問題變成與之結構相同的較小的問題

遞迴的要訣:找相似性(難點:引數的設計)、設定出口

技巧:實用性(列舉、逆算、試探)

例1:一共有n條直線,最多可以形成多少個交點?

n條線最多可以形成多少個交點=》n-1條線最多有多少個交點+n-1

即:f(n)=f(n-1)+n-1,   n>1

f(n)=0,                 n=1

例2【迴圈改遞迴】:將for迴圈中列印1-10改為遞迴演算法

static void f(int a,int b) 

public static void main(string args)

例4【振興中華】小明參加了學校的趣味運動會,其中的乙個專案是:跳格仔。

地上畫著一些格仔,每個格仔裡寫乙個字,如下所示:(也可參見下圖)

從我做起振

我做起振興

做起振興中

起振興中華

比賽時,先站在左上角的寫著「從」字的格仔裡,可以橫向或縱向跳到相鄰的格仔裡,但不能跳到對角的格仔或其它位置。一直要跳到「華」字結束。

要求跳過的路線剛好構成「從我做起振興中華」這句話。

請你幫助小明算一算他一共有多少種可能的跳躍路線呢?

解析:建立座標軸,假設「華」的座標為(1,1),「從」的座標為(5,4)

f(m,n)=f(m-1,n)+f(m,n-1) ,m>1&&n>1

f(m,n)=1,m=1||n=1

static int f(int m,int n) 

public static void main(string args)

例5【出棧順序】x星球特別講究秩序,所有道路都是單行線。

乙個甲殼蟲車隊,共16輛車,按照編號先後發車,夾在其它車流中,緩緩前行。

路邊有個死胡同,只能容一輛車通過,是臨時的檢查站,如圖所示。

x星球太死板,要求每輛路過的車必須進入檢查站,也可能不檢查就放行,也可能仔細檢查。

如果車輛進入檢查站和離開的次序可以任意交錯。那麼,該車隊再次上路後,可能的次序有多少種?

為了方便起見,假設檢查站可容納任意數量的汽車。

顯然,如果車隊只有1輛車,可能次序1種;2輛車可能次序2種;3輛車可能次序5種。

解析:相似性:要不就是等待中的車進入死胡同,要不就就是死胡同中有一輛車出來,即:f(n,m)=f(n-1,m+1)+f(n,m-1)

出口:當無等待的車時,f(0,n)=1;當死胡同中沒有車時,f(n,0)=f(n-1,1)

static int f(int m,int n) 

public static void main(string args)

藍橋杯 遞迴與迴圈

致謝藍橋杯 有些語言沒有迴圈語句,只能使用遞迴 我們來個案例,非常簡單列印 從0到9 我們用迴圈很容易解決 當然遞迴也不難 for int i 0 i 9 i 先上遞迴 public static void f int n 我們這樣理解,上級來了乙個任務 我要安排下級,但是我也要做一些事情 列印 但...

藍橋杯的一點兒小技巧

仔細看題,不要理解錯題意。多測試幾組資料 1 程式設計填空題 直接複製 填了空測試 所填 是否正確 2 有的填空題可能沒有思路 可以嘗試一下手算 3 填空題寫 時可以直接用 include但是在程式設計題還是寫 諸如 include型別的標頭檔案 4 有的題寫不出來最優的演算法,也要要暴力的演算法寫...

藍橋杯微控制器設計與開發筆記(一)

近期和我們實驗室的小夥伴一起參加了第七屆藍橋杯微控制器開發與設計組省賽,在這裡將備賽期間的一些資料和經驗總結一下,並分享給大家。藍橋杯微控制器開發板是國信長天的ct107d微控制器綜合訓練平台,個人感覺這塊開發板的設計還是很不錯的。之前一直用的普中的板子,自己也做過一些最小系統板,練習了藍橋杯的板子...