基礎算法設計-遞歸篇(二)

前言

說起來,我寫這個系列的文章焚挠,與其說的技術文膏萧,不如說是就是自己再復習上課講過的內容,這些題做了也有一段時間了,在復習的同時榛泛,分享一下自己的成長與學習足跡蝌蹂,嘛,說不定也是一代大佬的成長之路曹锨。
這次還是遞歸孤个,上一篇用單個例子,這一篇就把自己做過的所有題都放上來沛简,相對還是挺簡單的齐鲤,據(jù)說面試喜歡考這個?不過代碼量確實是比較少的覆享,可以了解一下佳遂。最后面也會附上一道深度的題目。
注:題目來自我們親愛老班的OJ撒顿,若覺有不妥之地請務必聯(lián)系我丑罪,我可以立馬收起來......

遞歸(助理解的簡單例題)

例題一:

題目描述

給定數(shù)字n,n的半數(shù)序列集是(1)在 n 的右邊加上一個自然數(shù)凤壁,但該自然數(shù)不能超過最近添加的數(shù)的一半吩屹,這樣生了新的序列;(2)按此規(guī)則進行處理拧抖,直到不能再添加自然數(shù)為止煤搜。例如,4的半數(shù)序列集是{4唧席,4 2擦盾,4 2 1,4 1}淌哟。

輸入

一個整數(shù) n迹卢,(0<n<=50)。

輸出

按照數(shù)字降序徒仓,輸出集合所有序列腐碱,每個序列一行,每個數(shù)字后面跟一個空格掉弛。

樣例輸入

6

樣例輸出

6 3 1
6 3
6 2 1
6 2
6 1
6

來源

[計科老班]

先說說自己一開始的想法症见。題目的意思比較明顯,假設一個6殃饿,往后添加一個數(shù)是3(6/2=3>=3>0)谋作,之后這里6 3作為一個結果輸出,然后上一次的數(shù)變?yōu)榱?乎芳,那么往3后面加的數(shù)是1(3/2=1.5;1.5>=1>0)瓷们;再看別的情況6后面符合條件的數(shù)還有2(6/2=3>=2>0)业栅,以此類推,最后結果 再加上自己本身谬晕。
上一章說到過碘裕,像這種重復去生成并判斷一個數(shù)后面的數(shù)是否符合要求,可以用遞歸來實現(xiàn)攒钳,而且這題跟上一題還很相像帮孔,在遞歸方法中都需要一個循環(huán)去執(zhí)行遞歸,原因是能填入第二個位置的數(shù)有多個不撑,而在填入這個數(shù)之后又將執(zhí)行下一次數(shù)的填入文兢,依然是可能有多個的,加上上面的規(guī)律來看焕檬,不難判斷出我們需要的循環(huán)次數(shù)為n/2(n為輸入數(shù)據(jù))姆坚;
emmm,可能說的有些混亂实愚,畢竟能把人說懂這種操作是非常高端的兼呵。沒關系,文字之間我們可能沒有聯(lián)系腊敲,但是我相信代碼可以成為我們溝通不錯的橋梁击喂。

正文

import java.util.ArrayList;

public class Hyj1476 {
    
    int[] result;
    int n;
    
    public Hyj1476(){
        n = 6;
        result = new int[n];
        result[0] = n;
        addNum(1,n);
        System.out.println(n);
    }
    
    public void addNum(int index,int max){
        for(int i=max/2;i>0;i--)
        {
            result[index] = i;
            addNum(index+1,i);
            for(int k=0;k<=index;k++)System.out.print(result[k]+" ");
            System.out.println();
        }
    }
    
    public static void main(String[] args){
        new Hyj1476();
    }
}

這里沒有用if條件判斷,而是直接在for循環(huán)之中輸出并通過每次傳進的i來判斷是否到達臨界條件碰辅,設置一個index下標懂昂,表示當前處于結果數(shù)組中的位置,這樣當輸出時就可以避免將數(shù)組后不需要的0當做輸出結果没宾。注意放在調用該方法下方輸出凌彬,在遞歸進入最里的臨界值時,若符合條件會輸出循衰,這樣就能顯示上面輸出樣例需要的格式饿序。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市羹蚣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乱凿,老刑警劉巖顽素,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異徒蟆,居然都是意外死亡胁出,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門段审,熙熙樓的掌柜王于貴愁眉苦臉地迎上來全蝶,“玉大人,你說我怎么就攤上這事∫忠” “怎么了绷落?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長始苇。 經常有香客問我砌烁,道長,這世上最難降的妖魔是什么催式? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任函喉,我火速辦了婚禮,結果婚禮上荣月,老公的妹妹穿的比我還像新娘管呵。我一直安慰自己,他們只是感情好哺窄,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布捐下。 她就那樣靜靜地躺著,像睡著了一般堂氯。 火紅的嫁衣襯著肌膚如雪蔑担。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天咽白,我揣著相機與錄音啤握,去河邊找鬼。 笑死晶框,一個胖子當著我的面吹牛排抬,可吹牛的內容都是我干的。 我是一名探鬼主播授段,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蹲蒲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了侵贵?” 一聲冷哼從身側響起届搁,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窍育,沒想到半個月后卡睦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡漱抓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年表锻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乞娄。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡瞬逊,死狀恐怖显歧,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情确镊,我是刑警寧澤士骤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站骚腥,受9級特大地震影響敦间,放射性物質發(fā)生泄漏。R本人自食惡果不足惜束铭,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一廓块、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧契沫,春花似錦带猴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至会通,卻和暖如春口予,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涕侈。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工沪停, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人裳涛。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓木张,卻偏偏與公主長得像,于是被迫代替她去往敵國和親端三。 傳聞我的和親對象是個殘疾皇子舷礼,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內容