計算機程式設計藝術 第I卷 續2

2021-03-31 08:56:30 字數 851 閱讀 5127

3)輸入    乙個演算法有0個或多個的輸入。它即是,在演算法開始之前,對演算法最初給出的量。這些輸入取自於特定的物件集合。例如,在演算法e中,有兩個輸入,即m和n,它們都取自於正整數集合。

4)輸出    乙個演算法有乙個或多個的輸出。它即是,同輸入有某個特定關係的量。演算法e有乙個輸出,即是步驟e2中的n,它是兩個輸入的最大公因子。

(此數確實是最大公因子,我們可以很容易證明如下。在步驟e1後,我們有

m=qn+r

其中q是某個整數。若r=0,則m是n的乙個倍數,且顯然在這種情況下,n就是m和n的最大公因子。若r≠0,注意同時除盡m和n兩數的任何數必定也除盡m-qn=r,而且同時除盡n和r兩數的任何數必定也除盡qn+r=m;所以m和n的公因子的集合必定與n和r的公因子的集合相同,而且,特別地,m和n的最大公因子與n和r的最大公因子相同。因此步驟e3並不改變原來問題的答案)。

5)能行性    一般說來,還期望乙個演算法是能行的。這意味著演算法中所有有待實現的運算必須都是相當基本的,即是說,它們原則上都是能夠精確地進行的,而且人們用筆和紙做有窮次即可完成。演算法e僅僅使用乙個正整數除以另乙個正整數的除法,測試乙個整數是否為0,並置乙個變數的值等於另乙個變數的值這樣一些運算。這些運算都是能行的,因為整數可以用有窮的方式在紙上表示之,而且至少有乙個方法(「除法演算法」)來進行乙個整數除以另乙個整數的運算。但若兩數之值是由無窮的十進展開所確定的任何實數,則同一運算就不是能行的。又若兩數之值是不能精確地加以確定的物理線段的長度,則同一運算也就不是能行的。非能行的步驟的另乙個例子是,「如果2是使方程 『x的n次方+y的n次方=z的n次方』 有正整數解x,y,z的n當中最大的整數,則進行步驟e4」。這樣乙個語句不是乙個能行的運算,除非有人能夠說明有乙個演算法來確定2是否具有所說的性質的最大整數。

(未完待續)

計算機程式設計藝術 第I卷 續1

步驟e3中的箭頭 是最重要的替代運算 有時叫做賦值或代換 m n 意思是變數m的值代之以變數n的當前值。當演算法e開始時,m和n的值是原來給出的數 但當它結束時,一般說來,這些變數將有不同的值。箭號用來把替代運算同相等關係加以區別 我們將不說 置m n 但也許我們將要問 是否m n?號標記乙個可被測...

計算機程式設計藝術 第I卷

本文未完待續 目錄第1章 基本概念 1.1 演算法 1.2 數學準備 1.2.1 數學歸納法 1.2.2 數 冪和對數 1.2.3 和與積 1.2.4 整數函式和初等數論 1.2.5 排列和階乘 1.2.6 二項式係數 1.2.7 調和數 1.2.8 斐波那契數 1.2.9 生成函式 1.2.10 ...

計算機程式設計(c )第2周程式設計作業

1 溫度轉換 題目內容 輸入華氏溫度,用下列公式將其轉換為攝氏溫度並輸出。c 5 9 f 32 輸入格式 實數輸出格式 轉換後的攝氏溫度,實數。輸入樣例 輸出樣例 26.6667 includeusing namespace std int main 3 資料的簡單統計 題目內容 程式設計實現,使用...