CH6 自訂函式
程教 文月
什麼?函式也可以自己做?
★普通用慣了 cin 、 cout…… 是不是也會手
癢想要「自訂函式」 ?呢
★自訂函式主要的意義在於避免同一個程式
中使用到同一種技巧( EX: 求質數、排
序),會有重複的程式碼的出現。
來看個函式的範例 ~
Ex:
int sum(int a,int b);
{
return a+b;
}
輸出函式
的值
函式名稱
輸入函式的值
回傳值
完整版是這樣:
#include<iostream>
using namespace std;
int sum(int a,int b)
{
return a+b;
}
int main()
{
int m,n;
cin>>m>>n;
cout<<sum(m,n)<<endl;
}
另類寫法:
#include<iostream>
using namespace std;
int sum(int,int);
int main(){
int m,n;
cin>>m>>n;
cout<<sum(m,n)<<endl;
}
int sum(int a,int b){
return a+b;
}
參數預設值
★ 範例 - 自由落體:
#include<iostream>
using namespace std;
float freefall(int t,float g=9.8){
return g*t;
}
int main(){
int x1=10;
cout<<freefall(1)<<endl;
cout<<freefall(2,x1)<<endl;
}
預設參數
使用預
設參數
執行結果
注意 !!
預設的參數要集中在
右方宣告喔
範例:不回傳 的函式值
★ 範例 - 輸出相同文字:
#include<iostream>
using namespace std;
void x(void){
cout<<"Hello!"<<endl;
}
int main(){
x();
x();
x();
}
執行結果
void 為「空」
之意
局部變數
★ 範例
#include<iostream>
using namespace std;
int add(void){
int number=100; // 初始值
cout<<number++<<endl;
}
int main(){
add();
add();
add();
}
執行結果
Q:
要怎麼做才可以使 number 改變呢
?
靜態局部變數
#include<iostream>
using namespace std;
int add(void){
static int number=100; // 初始值
cout<<number++<<endl;
}
int main(){
add();
add();
add();
}
執行結果
全域變數
#include<iostream>
using namespace std;
int number=100; // 初始值
int add(void){
cout<<number++<<endl;
}
int main(){
add();
add();
add();
}
執行結果
遞迴
• 相信大家都學過最多平面區域數的公式:
x=1 時 f(x)=2
x>1 時 f(x)=x+f(x-1)
遞迴
int area(int x){
if(x==1){
return 2;
}
else
{
return x+f(x-1);
}
}
寫成程式碼就變成這樣了 :
函式中帶入函
式 !!
CH6 到此結束 謝謝大家 ~
現在快來開創屬於你的函式吧 !!
( 歡迎使用遞迴 >w<)

Ch6 函式