「遞增法」是符合電腦運作特性的方法。電腦執行程式,一次只做一個動作,完成了一件事才做下一件事。當一個問題太大太多時,化整為零、一個一個解決吧!
合抱之木,生於毫末;九層之臺,起於累土;千里之行,始於足下。謹以此句與大家共勉。
範例:加總數字
無論電腦再怎麼強,還是得一個一個累加數字。
- void summation()
- {
- int array[5] = {3, 6, 9, -8, 1};
- int sum = 0;
- for (int i=0; i<5; i++)
- sum += array[i];
- cout << "總和是" << sum;
- }
- int summation(int array[], int n)
- {
- int sum = 0;
- for (int i=0; i<n; i++)
- sum += array[i];
- return sum;
- }
範例:複製字串
無論電腦再怎麼強,還是得逐字複製。
- void copy()
- {
- char s[15] = "incremental";
- char t[15];
- int i;
- for (i=0; s[i] != ' '; i++)
- t[i] = s[i];
- t[i] = ' ';
- cout << "原本字串" << s;
- cout << "複製之後的字串" << t;
- }
- void copy(char* s, char* t)
- {
- int i;
- for (i=0; s[i]; i++)
- t[i] = s[i];
- t[i] = ' ';
- }
範例:選擇排序法( Selection Sort )
找到第一小的數字,放在第一個位置;再找到第二小的數字,放在第二個位置。一次找一個數字,如此下去就會把所有數字按照順序排好了。
- void selection_sort()
- {
- int array[5] = {3, 6, 9, -8, 1};
- for (int i=0; i<5; i++)
- {
- // 從尚未排序的數字當中,找到第i小的數字。
- int min_index = i;
- for (int j=i+1; j<5; j++)
- if (array[j] < array[min_index])
- min_index = j;
- // 把第i小的數字,放在第i個位置。
- swap(array[i], array[min_index]);
- }
- // 印出排序結果。
- for (int i=0; i<5; i++)
- cout << array[i];
- }
- void selection_sort(int array[], int n)
- {
- for (int i=0; i<n; i++)
- {
- // 從尚未排序的數字當中,找到第i小的數字。
- int min_index = i;
- for (int j=i+1; j<n; j++)
- if (array[j] < array[min_index])
- min_index = j;
- // 把第i小的數字,放在第i個位置。
- swap(array[i], array[min_index]);
- }
- }
範例:印出直角三角形
多字成行,多行成直角三角形。由細微的東西開始,一件一件組起來。
- // 多字成行
- void print_line(int n) // n 是一行的長度
- {
- for (int i=1; i<=n; i++) cout << '@';
- cout << ' ';
- }
- // 多行成直角三角形
- void print_triangle(int n) // n 是行數
- {
- for (int i=n; i>=1; i--) print_line(i);
- }