商品編號:DJAA2V-A900HNLGK

遞迴演算法大師親授面試心法:Python 與 JavaScript 解題全攻略

$537
$680
折價券
  • P幣

    全盈+PAY單筆消費滿1200回饋80P幣(每帳號限乙次,限量5000名)

  • 登記送

    【OK】單筆滿$1純取貨/取貨付款訂單登記送OK購物金50元(限量)

  • 登記送

    【7-11】單筆滿$350純取貨/取貨付款訂單登記送一顆檸檬青茶兌換券乙張(限量)

付款方式
出貨
  • PChome 倉庫出貨,24小時到貨
配送
宅配滿$490免運,超取滿$350免運
  • 宅配到府(本島/低溫)
    滿$699免運
  • 宅配到府(本島/常溫)
    滿$490免運
  • 超商取貨(常溫)
    滿$350免運
  • 超商取貨(低溫)
    滿$699免運
  • i郵箱(常溫)
    滿$290免運
商品詳情
作者:
譯者:
江玠峰
ISBN:
9786263338951
出版社:
出版日期:
2024/07/17
  • 內文簡介

  • <內容簡介>

    「無論你想在程式設計面試中獲得優勢,
    想創造美麗的數學藝術,
    還是頑固地非得理解這個概念的有趣特性,
    這本書都將成為你深入遞迴這個兔子洞的指南(兔子洞裡還有兔子洞)。」

    遞迴程式設計技術可以產生優雅的程式解決方案,然而更常見的是,它讓程式設計師感到困惑。這並不代表程式設計師可以(或應該)忽略遞迴;儘管遞迴以具有挑戰性而聞名,但它是一個重要的電腦科學主題,並且可以對程式設計本身產生敏銳的洞察力。至少,了解遞迴可以幫助你順利通過程式設計工作面試。

    如果你是對電腦科學感興趣的學生,遞迴是你要理解許多流行演算法所必須克服的必要障礙。如果你是程式設計訓練營的畢業生或自學而成的程式設計師,並且順利跳過了更具理論性的電腦科學主題,但在「白板程式設計面試」中肯定還是會遇到遞迴問題。如果你是一位經驗豐富的軟體工程師,以前從未接觸過遞迴演算法,你可能會發現遞迴是你知識中一塊尷尬的缺口。

    本書目標讀者
    本書適合那些對遞迴演算法感到恐懼或感興趣的人。對於新手程式設計師或電腦科學系的大一新生來說,遞迴主題就像難以理解的黑魔法一樣。大多數遞迴課程都很難理解,使得這個主題不但讓人覺得挫敗,甚至令人心生恐懼。對於這些讀者來說,這本書的直接解釋和充足的例子應該能幫助他們最終理解這個主題。

    閱讀本書的唯一先決條件是具備 Python 或 JavaScript 程式語言的基本程式設計經驗,因為各章的程式碼範例使用了這兩種語言。本書的程式已被精簡到核心的基本結構; 如果你知道如何呼叫和建立函數,以及理解全域變數和局部變數之間的區別,那麼你就足以應付這些程式設計範例了。

    本書使用 Python 和 JavaScript 範例來教授遞迴的基礎知識,揭示了遞迴的教學方法,並闡明了所有遞迴演算法的基本原理。你將學習何時使用遞迴函數(最重要的是,何時不使用它們),如何實現工作面試中經常提到的經典遞迴演算法,以及遞迴技術如何幫助解決有關樹走訪、組合學等等許許多多的問題,以及其他棘手的話題。

    這個以專案為主的指南包含了完整的、可運行的程式,將能幫助你學習:
    ☑︎ 遞迴函數如何使用呼叫堆疊,這是一種在遞迴課程中幾乎從未討論過的關鍵資料結構
    ☑︎ 「頭尾」與「信仰飛躍」技巧如何簡化遞迴函數的編寫
    ☑︎ 如何使用遞迴為你的檔案系統編寫自訂搜尋腳本、繪製碎形藝術、生成迷宮等
    ☑︎ 優化和記憶如何使遞迴演算法更有效率


    ★目錄:

    【第一部分:理解遞迴】

    Chapter 1 遞迴是什麼?
    遞迴的定義
    什麼是函數?
    什麼是堆疊?
    什麼是呼叫堆疊?
    什麼是遞迴函數和堆疊溢出?
    基本情況和遞迴情況
    遞迴呼叫前後的程式碼
    結論
    延伸閱讀
    練習題

    Chapter 2 遞迴與迭代
    計算階乘
    計算費波那契數列
    將遞迴演算法轉換為迭代演算法
    將迭代演算法轉換為遞迴演算法
    案例分析:計算指數
    什麼時候需要使用遞迴?
    提出遞迴演算法
    結論
    延伸閱讀
    練習題
    練習專案

    Chapter 3 經典遞迴演算法
    對陣列中的數字求和
    反轉字串
    檢測回文
    解決河內塔問題
    使用 Flood Fill
    使用 Ackermann 函數
    結論
    延伸閱讀
    練習題
    練習專案

    Chapter 4 回溯和樹走訪演算法
    使用樹走訪
    在樹中找尋八個字母的名字
    取得樹的最大深度
    解決迷宮問題
    結論
    延伸閱讀
    練習題
    練習專案

    Chapter 5 各個擊破演算法
    二元搜尋:在按照字母順序排列的書架中尋找一本書
    快速排序:將未排序的書堆拆分為已排序的書堆
    合併排序:將小堆撲克牌合併成較大的排序堆
    對整數陣列求和
    Karatsuba 乘法
    Karatsuba 演算法背後的代數
    結論
    延伸閱讀
    練習題
    練習專案

    Chapter 6 排列組合
    集合論的術語
    找到所有不重複的排列:婚禮座位表
    使用巢狀迴圈來取得排列:一種不太理想的方法
    重複排列:密碼破解
    透過遞迴取得 K 組合
    取得平衡括號的所有組合
    冪集:找出集合的所有子集合
    結論
    延伸閱讀
    練習題
    練習專案

    Chapter 7 記憶化與動態規劃
    記憶化
    Python 的 functools 模組
    當你記憶化非純函數時會發生什麼事?
    結論
    延伸閱讀
    練習題

    Chapter 8 尾部呼叫優化
    尾部遞迴和尾部呼叫優化如何運作
    尾部遞迴中的累加器
    尾部遞迴的局限性
    尾部遞迴的案例研究
    結論
    延伸閱讀
    練習題

    Chapter 9 繪製碎形
    烏龜圖形
    基本的烏龜函數
    Sierpinski 三角形
    Sierpinski 地毯
    碎形樹
    英國的海岸有多長?Koch 曲線和雪花
    Hilbert 曲線
    結論
    延伸閱讀
    練習題
    練習專案

    【第二部分:專案】

    Chapter 10 檔案搜尋器
    完整的檔案搜尋程式
    配對函數
    遞迴 walk() 函數
    呼叫 walk() 函數
    用於處理檔案的有用 Python 標準函式庫函數
    結論
    延伸閱讀

    Chapter 11 迷宮生成器
    完整的迷宮生成器程式
    設定迷宮生成器的常數
    建立迷宮資料結構
    印出迷宮資料結構
    使用遞迴回溯演算法
    啟動遞迴呼叫鏈
    結論
    延伸閱讀

    Chapter 12 滑塊解題器
    遞迴解決 15-puzzle
    完整的滑塊解題器程式
    設定程式的常數
    將滑塊拼圖表示為資料
    設定新拼圖
    遞迴解決滑塊拼圖問題
    啟動解題器
    結論
    延伸閱讀

    Chapter 13 Fractal Art Maker
    內建碎形
    Fractal Art Maker 演算法
    完整的 Fractal Art Maker 程式
    設定常數和 Turtle 的配置
    使用「形狀繪製」函數
    使用碎形繪圖函數
    建立碎形範例
    建立你自己的碎形
    結論
    延伸閱讀

    Chapter 14 畫中畫創作家
    安裝 Python 的 Pillow 函式庫
    描繪你的圖像
    完整的 Droste Maker 程式
    配置
    尋找洋紅色區域
    調整基本圖像的大小
    遞迴地將圖像放置在圖像內
    結論
    延伸閱讀


    <作者簡介>

    Al Sweigart
    Al Sweigart 是軟體開發人員、Python 軟體基金會院士,也是 No Starch Press 出版多本程式設計書籍的作者,其中包括全球暢銷書《Automate the Boring Stuff with Python》。他所授權的作品《Creative Commons》可在 https://www.inventwithpython.com上找到。
購物須知
寄送時間
全台灣24h到貨,遲到提供100元現金積點。全年無休,週末假日照常出貨。例外說明
送貨方式
透過宅配送達。除網頁另有特別標示外,均為常溫配送。
消費者訂購之商品若經配送兩次無法送達,再經本公司以電話與Email均無法聯繫逾三天者,本公司將取消該筆訂單,並且全額退款。
送貨範圍
限台灣本島與離島地區註,部分離島地區包括連江馬祖、綠島、蘭嶼、琉球鄉…等貨件,將送至到岸船公司碼頭,需請收貨人自行至碼頭取貨。注意!收件地址請勿為郵政信箱。
註:離島地區不配送安裝商品、手機門號商品、超大材商品及四機商品。
售後服務
缺掉頁更換新品
執照證號&登錄字號
本公司食品業者登錄字號A-116606102-00000-0
關於退貨
  • PChome24h購物的消費者,都可以依照消費者保護法的規定,享有商品貨到次日起七天猶豫期的權益。(請留意猶豫期非試用期!!)您所退回的商品必須回復原狀(復原至商品到貨時的原始狀態並且保持完整包裝,包括商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性)。商品一經拆封/啟用保固,將使商品價值減損,您理解本公司將依法收取回復原狀必要之費用(若無法復原,費用將以商品價值損失計算),請先確認商品正確、外觀可接受再行使用,以免影響您的權利,祝您購物順心。
  • 如果您所購買商品是下列特殊商品,請留意下述退貨注意事項:
    1. 易於腐敗之商品、保存期限較短之商品、客製化商品、報紙、期刊、雜誌,依據消費者保護法之規定,於收受商品後將無法享有七天猶豫期之權益且不得辦理退貨。
    2. 影音商品、電腦軟體或個人衛生用品等一經拆封即無法回復原狀的商品,在您還不確定是否要辦理退貨以前,請勿拆封,一經拆封則依消費者保護法之規定,無法享有七天猶豫期之權益且不得辦理退貨。
    3. 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,一經您事先同意後始提供者,依消費者保護法之規定,您將無法享有七天猶豫期之權益且不得辦理退貨。
    4. 組合商品於辦理退貨時,應將組合銷售商品一同退貨,若有遺失、毀損或缺件,PChome將可能要求您依照損毀程度負擔回復原狀必要之費用。
  • 若您需辦理退貨,請利用顧客中心「查訂單」或「退訂/退款查詢」的「退訂/退貨」功能填寫申請,我們將於接獲申請之次日起1個工作天內檢視您的退貨要求,檢視完畢後將以E-mail回覆通知您,並將委託本公司指定之宅配公司,在5個工作天內透過電話與您連絡前往取回退貨商品。請您保持電話暢通,並備妥原商品及所有包裝及附件,以便於交付予本公司指定之宅配公司取回(宅配公司僅負責收件,退貨商品仍由特約廠商進行驗收),宅配公司取件後會提供簽收單據給您,請注意留存。
  • 退回商品時,請以本公司或特約廠商寄送商品給您時所使用的外包裝(紙箱或包裝袋),原封包裝後交付給前來取件的宅配公司;如果本公司或特約廠商寄送商品給您時所使用的外包裝(紙箱或包裝袋)已經遺失,請您在商品原廠外盒之外,再以其他適當的包裝盒進行包裝,切勿任由宅配單直接粘貼在商品原廠外盒上或書寫文字。
  • 若因您要求退貨或換貨、或因本公司無法接受您全部或部分之訂單、或因契約解除或失其效力,而需為您辦理退款事宜時,您同意本公司得代您處理發票或折讓單等相關法令所要求之單據,以利本公司為您辦理退款。
  • 本公司收到您所提出的申請後,若經確認無誤,將依消費者保護法之相關規定,返還您已支付之對價(含信用卡交易),退款日當天會再發送E-mail通知函給您。