IOS 階段學習第七天筆記(函數、遞迴),ios第七天
一、函數
1)概念:具有特定功能的代碼塊的封裝
2)函數的定義: 函數類型+函數名(形參列表)
函數類型 函數名(形參類型1 形參名1,形參類型2 形參名2.....){
函數體;//函數的實現
}
3)函數名要符合標示符的定義
4)函數的傳回型別可為空白,為空白用void;也可以是其他資料類型。
5)void函數的調用:函數名(); void類型不能用任何類型去接收。
6)int 類型函數的調用:定義int類型的資料去接收函數的傳回值,例如: int sum=add(x,y); 有時候也可以忽略 傳回值
7)return 函數的返回 ,void函數的return語句可以省略也可以return 空,return語句可以有多條,以執行到的第一句為準。
8)非void的其他類型,return 運算式類型要和定義的類型匹配
9)傳回型別與接收類型不符時不一定會報錯,但會造成精度的損失,例如:int類型的函數用char類型接收
10)函數的好處:將不同的功能實現封裝起來,容易閱讀和維護;便於分工,調用的人可以不關心具體的實現。
11)函數使用的注意點:
1、函數名要言之有物,名字和功能一致。
2、介面要精簡(形參,傳回值)
3、實現的功能要單一,不要混雜。
4、對外的函數介面要由詳細的注釋
12)局部變數:從變數定義的位置開始到定義所在的方法體的“}”結束
13)函數啟動並執行過程:
1、給形參開闢空間
2、實際參數給形式參數傳值
3、形式參數參與運算
4、return 的時候形參銷毀
14)全域變數:定義在方法體外面的變數,優點所有函數都能訪問,缺點所有函數都能修改不安全。
15).c檔案寫方法的實現;.h檔案放函數的聲明。
16)函數的聲明: 函數傳回型別 函數名(形參類型1 形參名1,形參類型2 形參名2....)。
17)函數在main後面定義,但是必須要在main之前聲明。
18)標頭檔存放內容:
1、函數的聲明
2、類型定義 #typedef
3、宏定義 #define
19)函數都是平級的可以相互調用,也可以自己調用自己。
二、遞迴
1)概念:函數自己調用自己的一個過程
2)遞迴的優點是使代碼結構層次更清晰使程式更簡潔,缺點是佔用資源太多,可能造成堆疊溢位。
3)使用遞迴演算法 計算斐波拉契數列
實現代碼:
1 int fblq(int n){ 2 if(n==1||n==2) 3 return 1; 4 else 5 return fblq(n-1)+fblq(n-2); 6 } 7 int main(){ 8 int len=20; 9 for (int i=1; i<=len; i++) {10 printf("%d ",fblq(i));11 }12 return 0;13 }
4)使用遞迴求兩個數的最大公約數
實現代碼:
1 int ComDiv(int x,int y){ 2 if(x%y==0) 3 return y; 4 else 5 return ComDiv(y,x%y); 6 } 7 8 int main(){ 9 printf(“%d”, ComDiv(28,35));10 return 0;11 }