設計函數的目的在因而對於一段代碼的引用簡潔方便,易於維護
例如:求x到y兩個數之間全部的整數之和,
例如ios
#include <iostream> using namespace std void main() { int a,b; int sum cin>>a>>b; for(sum=0;a<=b;a++) { sum=sum+a; } cout<<"a="<<sum<<endl; }
若是要在函數中反覆調用這段代碼須要,屢次複製,一旦出現問題須要到全文中處處去修改,可是若是是使用函數能夠只修改函數避免了到全文去修改的麻煩。c++
c++容許用同一個函數名命名不一樣的函數,以輸入參數類型的不一樣來進行區分,使得對於相似功能的函數極爲友好,下降編程的命名複雜度。
例如在實現計算器加減乘除功能時使用函數的重載能夠使得編程更加簡單:編程
#include <iostream> using namespace std int add(int x,int y) { return x+y; } float add(float x,float y) { return x+y; } int main() { int x,y; add(x,y); (float) x; (float) y; add(x,y); }
值傳遞是指只將參數的值傳入函數中,沒法對參數進行修改
例如:函數
#include <iostream> using namespace std int add(int x,int y) { x=x+1; y=y+1 return x+y; } float add(float x,float y) { x=x+1; y=y+1; return x+y; } int main() { int x,y; cin>>x>>y; add(x,y); (float) x; (float) y; add(x,y); cout<<"x="<<x<<"y="<<y<<endl; }
其中參數沒法在函數中被改變,打印出的x,y不會改變spa
將參數的地址傳入函數中,能夠使得函數對參數進行修改,使用面積較大啊
例如設計
#include <iostream> using namespace std int add(int *x,int *y) { x=x+1; y=y+1 return x+y; } float add(float *x,float *y) { x=x+1; y=y+1; return x+y; } int main() { int x,y; cin>>x>>y; add(x,y); (float) x; (float) y; add(x,y); cout<<"x="<<x<<"y="<<y<<endl; }
在該函數中傳入的參數得以修改,打印出的x,y,的值對應其在函數中的變化blog
#include <iostream> using namespace std int feibo(int n) { if(n == 0) { return 0; } if(n == 1) { return 1; } else { return feibo(n-1)+feibo(n-2); } } void main() { int n; cin>>n; cout<<feibo(n)<<endl; }
遞歸函數指在函數內部調用本身,下降函數複雜度,使用遞歸函數必須設置下線不然函數會無限的調用本身。遞歸
實驗設計:將五中函數取消下限看是否有結果,在本身加上下限,觀察下限的重要性。ci