Hello 算法 1.2.0 繁体中文 C语言 版‧ 遞迴:將問題分解為子問題 ?(?) = ?+?(?−1) ,不斷(遞迴地)分解下去,直至基本情況 ?(1) = 1 時終止。 1. 呼叫堆疊 遞迴函式每次呼叫自身時,系統都會為新開啟的函式分配記憶體,以儲存區域性變數、呼叫位址和其他資訊 等。這將導致兩方面的結果。 ‧ 函式的上下文資料都儲存在稱為“堆疊幀空間”的記憶體區域中,直至函式返回後才會被釋放。因此, 遞迴通常比迭代更加耗費記憶體空間。 的,這種工作機制與堆疊的“先入後出”原則異曲同工。 事實上,“呼叫堆疊”和“堆疊幀空間”這類遞迴術語已經暗示了遞迴與堆疊之間的密切關係。 1. 遞:當函式被呼叫時,系統會在“呼叫堆疊”上為該函式分配新的堆疊幀,用於儲存函式的區域性變 數、參數、返回位址等資料。 2. 迴:當函式完成執行並返回時,對應的堆疊幀會被從“呼叫堆疊”上移除,恢復之前函式的執行環境。 因此,我們可以使用一個顯式的堆 worst_best_time_complexity.c === /* 生成一個陣列,元素為 { 1, 2, ..., n },順序被打亂 */ int *randomNumbers(int n) { // 分配堆積區記憶體(建立一維可變長陣列:陣列中元素數量為 n ,元素型別為 int ) int *nums = (int *)malloc(n * sizeof(int)); // 生成陣列 nums0 码力 | 392 页 | 18.83 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 C# 版‧ 遞迴:將問題分解為子問題 ?(?) = ?+?(?−1) ,不斷(遞迴地)分解下去,直至基本情況 ?(1) = 1 時終止。 1. 呼叫堆疊 遞迴函式每次呼叫自身時,系統都會為新開啟的函式分配記憶體,以儲存區域性變數、呼叫位址和其他資訊 等。這將導致兩方面的結果。 ‧ 函式的上下文資料都儲存在稱為“堆疊幀空間”的記憶體區域中,直至函式返回後才會被釋放。因此, 遞迴通常比迭代更加耗費記憶體空間。 的,這種工作機制與堆疊的“先入後出”原則異曲同工。 事實上,“呼叫堆疊”和“堆疊幀空間”這類遞迴術語已經暗示了遞迴與堆疊之間的密切關係。 1. 遞:當函式被呼叫時,系統會在“呼叫堆疊”上為該函式分配新的堆疊幀,用於儲存函式的區域性變 數、參數、返回位址等資料。 2. 迴:當函式完成執行並返回時,對應的堆疊幀會被從“呼叫堆疊”上移除,恢復之前函式的執行環境。 因此,我們可以使用一個顯式的堆 基於鏈結串列可實現:堆疊、佇列、雜湊表、樹、堆積、圖等。 鏈結串列在初始化後,仍可以在程式執行過程中對其長度進行調整,因此也稱“動態資料結構”。陣列在初始 化後長度不可變,因此也稱“靜態資料結構”。值得注意的是,陣列可透過重新分配記憶體實現長度變化,從 而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D0 码力 | 379 页 | 18.79 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 Dart 版‧ 遞迴:將問題分解為子問題 ?(?) = ?+?(?−1) ,不斷(遞迴地)分解下去,直至基本情況 ?(1) = 1 時終止。 1. 呼叫堆疊 遞迴函式每次呼叫自身時,系統都會為新開啟的函式分配記憶體,以儲存區域性變數、呼叫位址和其他資訊 等。這將導致兩方面的結果。 ‧ 函式的上下文資料都儲存在稱為“堆疊幀空間”的記憶體區域中,直至函式返回後才會被釋放。因此, 遞迴通常比迭代更加耗費記憶體空間。 的,這種工作機制與堆疊的“先入後出”原則異曲同工。 事實上,“呼叫堆疊”和“堆疊幀空間”這類遞迴術語已經暗示了遞迴與堆疊之間的密切關係。 1. 遞:當函式被呼叫時,系統會在“呼叫堆疊”上為該函式分配新的堆疊幀,用於儲存函式的區域性變 數、參數、返回位址等資料。 2. 迴:當函式完成執行並返回時,對應的堆疊幀會被從“呼叫堆疊”上移除,恢復之前函式的執行環境。 因此,我們可以使用一個顯式的堆 基於鏈結串列可實現:堆疊、佇列、雜湊表、樹、堆積、圖等。 鏈結串列在初始化後,仍可以在程式執行過程中對其長度進行調整,因此也稱“動態資料結構”。陣列在初始 化後長度不可變,因此也稱“靜態資料結構”。值得注意的是,陣列可透過重新分配記憶體實現長度變化,從 而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D0 码力 | 378 页 | 18.77 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 Go 版‧ 遞迴:將問題分解為子問題 ?(?) = ?+?(?−1) ,不斷(遞迴地)分解下去,直至基本情況 ?(1) = 1 時終止。 1. 呼叫堆疊 遞迴函式每次呼叫自身時,系統都會為新開啟的函式分配記憶體,以儲存區域性變數、呼叫位址和其他資訊 等。這將導致兩方面的結果。 ‧ 函式的上下文資料都儲存在稱為“堆疊幀空間”的記憶體區域中,直至函式返回後才會被釋放。因此, 遞迴通常比迭代更加耗費記憶體空間。 的,這種工作機制與堆疊的“先入後出”原則異曲同工。 事實上,“呼叫堆疊”和“堆疊幀空間”這類遞迴術語已經暗示了遞迴與堆疊之間的密切關係。 1. 遞:當函式被呼叫時,系統會在“呼叫堆疊”上為該函式分配新的堆疊幀,用於儲存函式的區域性變 數、參數、返回位址等資料。 2. 迴:當函式完成執行並返回時,對應的堆疊幀會被從“呼叫堆疊”上移除,恢復之前函式的執行環境。 因此,我們可以使用一個顯式的堆 基於鏈結串列可實現:堆疊、佇列、雜湊表、樹、堆積、圖等。 鏈結串列在初始化後,仍可以在程式執行過程中對其長度進行調整,因此也稱“動態資料結構”。陣列在初始 化後長度不可變,因此也稱“靜態資料結構”。值得注意的是,陣列可透過重新分配記憶體實現長度變化,從 而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D0 码力 | 385 页 | 18.80 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 Kotlin 版‧ 遞迴:將問題分解為子問題 ?(?) = ?+?(?−1) ,不斷(遞迴地)分解下去,直至基本情況 ?(1) = 1 時終止。 1. 呼叫堆疊 遞迴函式每次呼叫自身時,系統都會為新開啟的函式分配記憶體,以儲存區域性變數、呼叫位址和其他資訊 等。這將導致兩方面的結果。 ‧ 函式的上下文資料都儲存在稱為“堆疊幀空間”的記憶體區域中,直至函式返回後才會被釋放。因此, 遞迴通常比迭代更加耗費記憶體空間。 的,這種工作機制與堆疊的“先入後出”原則異曲同工。 事實上,“呼叫堆疊”和“堆疊幀空間”這類遞迴術語已經暗示了遞迴與堆疊之間的密切關係。 1. 遞:當函式被呼叫時,系統會在“呼叫堆疊”上為該函式分配新的堆疊幀,用於儲存函式的區域性變 數、參數、返回位址等資料。 2. 迴:當函式完成執行並返回時,對應的堆疊幀會被從“呼叫堆疊”上移除,恢復之前函式的執行環境。 因此,我們可以使用一個顯式的堆 基於鏈結串列可實現:堆疊、佇列、雜湊表、樹、堆積、圖等。 鏈結串列在初始化後,仍可以在程式執行過程中對其長度進行調整,因此也稱“動態資料結構”。陣列在初始 化後長度不可變,因此也稱“靜態資料結構”。值得注意的是,陣列可透過重新分配記憶體實現長度變化,從 而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D0 码力 | 382 页 | 18.79 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 Java 版‧ 遞迴:將問題分解為子問題 ?(?) = ?+?(?−1) ,不斷(遞迴地)分解下去,直至基本情況 ?(1) = 1 時終止。 1. 呼叫堆疊 遞迴函式每次呼叫自身時,系統都會為新開啟的函式分配記憶體,以儲存區域性變數、呼叫位址和其他資訊 等。這將導致兩方面的結果。 ‧ 函式的上下文資料都儲存在稱為“堆疊幀空間”的記憶體區域中,直至函式返回後才會被釋放。因此, 遞迴通常比迭代更加耗費記憶體空間。 的,這種工作機制與堆疊的“先入後出”原則異曲同工。 事實上,“呼叫堆疊”和“堆疊幀空間”這類遞迴術語已經暗示了遞迴與堆疊之間的密切關係。 1. 遞:當函式被呼叫時,系統會在“呼叫堆疊”上為該函式分配新的堆疊幀,用於儲存函式的區域性變 數、參數、返回位址等資料。 2. 迴:當函式完成執行並返回時,對應的堆疊幀會被從“呼叫堆疊”上移除,恢復之前函式的執行環境。 因此,我們可以使用一個顯式的堆 基於鏈結串列可實現:堆疊、佇列、雜湊表、樹、堆積、圖等。 鏈結串列在初始化後,仍可以在程式執行過程中對其長度進行調整,因此也稱“動態資料結構”。陣列在初始 化後長度不可變,因此也稱“靜態資料結構”。值得注意的是,陣列可透過重新分配記憶體實現長度變化,從 而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D0 码力 | 379 页 | 18.79 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 JavaScript 版‧ 遞迴:將問題分解為子問題 ?(?) = ?+?(?−1) ,不斷(遞迴地)分解下去,直至基本情況 ?(1) = 1 時終止。 1. 呼叫堆疊 遞迴函式每次呼叫自身時,系統都會為新開啟的函式分配記憶體,以儲存區域性變數、呼叫位址和其他資訊 等。這將導致兩方面的結果。 ‧ 函式的上下文資料都儲存在稱為“堆疊幀空間”的記憶體區域中,直至函式返回後才會被釋放。因此, 遞迴通常比迭代更加耗費記憶體空間。 的,這種工作機制與堆疊的“先入後出”原則異曲同工。 事實上,“呼叫堆疊”和“堆疊幀空間”這類遞迴術語已經暗示了遞迴與堆疊之間的密切關係。 1. 遞:當函式被呼叫時,系統會在“呼叫堆疊”上為該函式分配新的堆疊幀,用於儲存函式的區域性變 數、參數、返回位址等資料。 2. 迴:當函式完成執行並返回時,對應的堆疊幀會被從“呼叫堆疊”上移除,恢復之前函式的執行環境。 因此,我們可以使用一個顯式的堆 基於鏈結串列可實現:堆疊、佇列、雜湊表、樹、堆積、圖等。 鏈結串列在初始化後,仍可以在程式執行過程中對其長度進行調整,因此也稱“動態資料結構”。陣列在初始 化後長度不可變,因此也稱“靜態資料結構”。值得注意的是,陣列可透過重新分配記憶體實現長度變化,從 而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D0 码力 | 379 页 | 18.78 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 TypeScript 版‧ 遞迴:將問題分解為子問題 ?(?) = ?+?(?−1) ,不斷(遞迴地)分解下去,直至基本情況 ?(1) = 1 時終止。 1. 呼叫堆疊 遞迴函式每次呼叫自身時,系統都會為新開啟的函式分配記憶體,以儲存區域性變數、呼叫位址和其他資訊 等。這將導致兩方面的結果。 ‧ 函式的上下文資料都儲存在稱為“堆疊幀空間”的記憶體區域中,直至函式返回後才會被釋放。因此, 遞迴通常比迭代更加耗費記憶體空間。 的,這種工作機制與堆疊的“先入後出”原則異曲同工。 事實上,“呼叫堆疊”和“堆疊幀空間”這類遞迴術語已經暗示了遞迴與堆疊之間的密切關係。 1. 遞:當函式被呼叫時,系統會在“呼叫堆疊”上為該函式分配新的堆疊幀,用於儲存函式的區域性變 數、參數、返回位址等資料。 2. 迴:當函式完成執行並返回時,對應的堆疊幀會被從“呼叫堆疊”上移除,恢復之前函式的執行環境。 因此,我們可以使用一個顯式的堆 基於鏈結串列可實現:堆疊、佇列、雜湊表、樹、堆積、圖等。 鏈結串列在初始化後,仍可以在程式執行過程中對其長度進行調整,因此也稱“動態資料結構”。陣列在初始 化後長度不可變,因此也稱“靜態資料結構”。值得注意的是,陣列可透過重新分配記憶體實現長度變化,從 而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D0 码力 | 384 页 | 18.80 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 Swift 版‧ 遞迴:將問題分解為子問題 ?(?) = ?+?(?−1) ,不斷(遞迴地)分解下去,直至基本情況 ?(1) = 1 時終止。 1. 呼叫堆疊 遞迴函式每次呼叫自身時,系統都會為新開啟的函式分配記憶體,以儲存區域性變數、呼叫位址和其他資訊 等。這將導致兩方面的結果。 ‧ 函式的上下文資料都儲存在稱為“堆疊幀空間”的記憶體區域中,直至函式返回後才會被釋放。因此, 遞迴通常比迭代更加耗費記憶體空間。 的,這種工作機制與堆疊的“先入後出”原則異曲同工。 事實上,“呼叫堆疊”和“堆疊幀空間”這類遞迴術語已經暗示了遞迴與堆疊之間的密切關係。 1. 遞:當函式被呼叫時,系統會在“呼叫堆疊”上為該函式分配新的堆疊幀,用於儲存函式的區域性變 數、參數、返回位址等資料。 2. 迴:當函式完成執行並返回時,對應的堆疊幀會被從“呼叫堆疊”上移除,恢復之前函式的執行環境。 因此,我們可以使用一個顯式的堆 基於鏈結串列可實現:堆疊、佇列、雜湊表、樹、堆積、圖等。 鏈結串列在初始化後,仍可以在程式執行過程中對其長度進行調整,因此也稱“動態資料結構”。陣列在初始 化後長度不可變,因此也稱“靜態資料結構”。值得注意的是,陣列可透過重新分配記憶體實現長度變化,從 而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D0 码力 | 379 页 | 18.79 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 Ruby 版,不斷(遞迴地)分解下去,直至基本情況 ?(1) = 1 時終止。 第 2 章 複雜度分析 www.hello‑algo.com 24 1. 呼叫堆疊 遞迴函式每次呼叫自身時,系統都會為新開啟的函式分配記憶體,以儲存區域性變數、呼叫位址和其他資訊 等。這將導致兩方面的結果。 ‧ 函式的上下文資料都儲存在稱為“堆疊幀空間”的記憶體區域中,直至函式返回後才會被釋放。因此, 遞迴通常比迭代更加耗費記憶體空間。 的,這種工作機制與堆疊的“先入後出”原則異曲同工。 事實上,“呼叫堆疊”和“堆疊幀空間”這類遞迴術語已經暗示了遞迴與堆疊之間的密切關係。 1. 遞:當函式被呼叫時,系統會在“呼叫堆疊”上為該函式分配新的堆疊幀,用於儲存函式的區域性變 數、參數、返回位址等資料。 2. 迴:當函式完成執行並返回時,對應的堆疊幀會被從“呼叫堆疊”上移除,恢復之前函式的執行環境。 因此,我們可以使用一個顯式的堆 基於鏈結串列可實現:堆疊、佇列、雜湊表、樹、堆積、圖等。 鏈結串列在初始化後,仍可以在程式執行過程中對其長度進行調整,因此也稱“動態資料結構”。陣列在初始 化後長度不可變,因此也稱“靜態資料結構”。值得注意的是,陣列可透過重新分配記憶體實現長度變化,從 而具備一定的“動態性”。 Tip 如果你感覺物理結構理解起來有困難,建議先閱讀下一章,然後再回顧本節內容。 3.2 基本資料型別 當談及計算機中的資料時,我們會想到文字、圖片、影片、語音、3D0 码力 | 372 页 | 18.75 MB | 10 月前3
共 16 条
- 1
- 2













