章節總覽#

人類的認知方式是由近及遠、從小到大的遞推(Iterative)思維,這是根植於基因中的本能。然而計算機從一開始就被設計來處理規模極大的問題,因此需要一種截然不同的思維方式——遞歸(Recursive)。

計算思維中最重要的是自頂向下、先全局後局部的逆向思維,也就是遞歸。遞推與遞歸一字之差,但思維和行事方式截然不同。

核心對比:遞推 vs 遞歸#

  • 遞推:人類本能的正向思維,自底向上,從小到大
    • 例:計算 5! = 1 x 2 x 3 x 4 x 5
  • 遞歸:計算機的逆向思維,自頂向下,先全局後局部
    • 例:5! = 5 x 4!,4! = 4 x 3!,…,直到 1! = 1

本章涵蓋的主題#

  • 2.1 遞歸:計算思維的核心 —— 透過「搶 20」遊戲、上台階問題、漢諾塔、九連環和八皇后問題,說明遞歸思想的精髓
  • 2.2 遍歷:遞歸思想的典型應用 —— 樹與二叉樹的概念,以及如何用遞歸實現深度優先遍歷
  • 2.3 堆棧和隊列:遍歷的數據結構 —— 堆棧(LIFO)支撐遞歸算法,隊列(FIFO)實現廣度優先遍歷,並以簡單計算器為例說明堆棧的應用
  • 2.4 嵌套:自然語言的結構特徵 —— 將遞歸思想擴展到嵌套,透過自然語言的語法分析展示遞歸的力量

要點#

  • 人的思維通常是遞推,計算思維通常是遞歸
  • 遞歸的優點是以相同方式處理大問題和小問題,代碼簡潔易懂
  • 遞歸的思想再往前擴展一步,就是層層嵌套的思想,可將複雜問題分解為簡單問題
  • 對計算機從業者而言,要想達到隨心所欲的地步,就需要讓自己的頭腦按照計算機的方式去想問題