函數分類
內聯函數
1)內聯函數在編譯時將函數的代碼直接插入到調用它的地方,而不是通過函數調用的方式執行,從而減少了函數調用的開銷,提高了代碼的執行速度
2)使用 inline 關鍵字來聲明
3)將函數聲明為內聯函數只是給編譯器一個建議,告訴它將函數的代碼插入到調用的地方。編譯器可以選擇忽略內聯函數的建議,繼續將函數編譯為常規函數。
內聯函數的使用規則和特點:
遞歸函數
遞歸函數是一種函數調用自身的技術。遞歸函數可以用于解決需要重復執行相同操作的問題。
遞歸函數包括兩部分:基本情況和遞歸調用:
計算階乘
//遞歸計算階乘
unsigned int factorial(unsigned int n)
{if (n == 0 || n == 1) {return 1;} else {return n * factorial(n - 1);}
}
//循環計算階乘
unsigned int factorial(unsigned int n)
{unsigned int result = 1;for (unsigned int i = 1; i <= n; ++i) {result *= i;}return result;
}
斐波那契數列
//遞歸方法
int fibonacci(int n)
{if (n <= 1){return n;}return fibonacci(n-1) + fibonacci(n-2);
}
//迭代方法
int fibonacci(int n)
{if (n == 0){return 0;}int prev = 0;int curr = 1;for (int i = 2; i <= n; i++) {int next = prev + curr;prev = curr;curr = next;}return curr;
}
避免頭文件重復包含
使用文件保護宏
#ifndef HEADER_FILE_NAME_H
#define HEADER_FILE_NAME_H// 頭文件的內容#endif // HEADER_FILE_NAME_H
使用 #pragma once
#pragma once// 頭文件內容
雖然 #pragma once 在大多數情況下提供了簡潔的頭文件包含機制,而且幾乎所有主流的編譯器都支持它,但它不是C或C++的標準預處理指令。因此,如果您希望代碼更具可移植性,可以繼續使用傳統的頭文件保護宏。
詳細教程可轉
愛編程的大丙