天天看點

一步一步寫算法(之資料選擇)

【 聲明:版權所有,歡迎轉載,請勿用于商業用途。  聯系信箱:feixiaoxing @163.com】

    在數學中,有一些資料選擇的内容。舉個例子來說,有這樣一組資料:1、2、3、4。現在我們打算從中挑選出1個資料,那麼有幾種選擇呢?結果應該是1、2、3、4;那麼如果挑選2個資料呢,怎麼選呢?那麼結果應該是12、13、14、15。以此類推,我們還能挑選出3個資料、4個資料的情況。

    那麼,在程式上面應該怎麼表示呢?其實可以使用遞歸的方法。請大家和我一起計算一下:

    如果需要從1、2、3、4中挑選兩個資料,那麼是不是先從1開始,然後再2、3、4中挑選一個資料,這樣可以有12、13、14三種情況。接着呢,我們從2開始,下面可以選擇的資料隻有從3、4中選擇了,1不能選擇了,否則會産生重複選項。以此類推,那我們從4開始的時候,發現4後面沒有資料的時候,此時疊代終止。

    挑選2個資料如此,那麼挑選n個資料是不是也是這樣呢?首先選出第1個資料,那麼剩下來的資料隻能從這個資料後面位置開始挑選,如果挑選出n-1個資料,那麼表示n個資料存在,繼續尋找到,直到n-1個資料選不出來為止;接着我們移動第一個資料的位置,同樣需要在目前資料的後面挑選n-1個資料。以此類推,如果我們發現目前資料後面連n-1個資料都沒有了,那麼表示遞歸就結束了。

    下面我們就可以書寫代碼了。

    a)

定義全局空間和列印函數,儲存已經周遊的資料

    b)開始資料的疊代

    c)編寫測試用例,驗證結果

   注:我們可以通過不停修改數組data和數值number的方法,驗證列印出來的資料和我們自己計算的結果是否有出入。

繼續閱讀