Function
講師:張餅ya、立ya(代替確診派對仔上課)
建電大赦課[6]
國中學過的數學函數?
y = f(x)=2x + 1
f(1) = 3
f(2) = 5
f(3) = 7
丟一個x進去,跑出對應的y
程式咧?
type 自定義函數名(參數) {
/* 你想做的事 */
return 回傳變數;
}
要使用前宣告!
用剛剛的數學例子
#include <iostream>
using namespace std;
int f(int x){
return 2*x+1;
}
int main(){
cout << f(1) << endl;
cout << f(5) << endl;
cout << f(10000) << endl;
}
輸出:
為啥要用函數
- 更精簡的code
- 跟python函式一樣方便(順便推一下python小社)
- 不用寫一堆重複的東西
- 遞迴,下次會教!
Return
大部分都會需要return
(void例外)
Return
當函數類型不是void時,就需要return
促使Function結束並回傳
Return 的用處?
- 結束執行中的函數
- 回傳值給呼叫者
結束執行中的function
回傳數值
int minus(int a,int b){
return a-b;
}
int num = minus(1,2);
cout<<num<<endl;
//num = -1
int divide(int a,int b){
if(b==0){
return -1;
}
return a/b;
}
然後其實void也可以return喔~
只是不是return值,是直接return
回傳多個數值
int ???(int a,int b,int c){
//你要做的事
return x1,x2;
}
不能這麼做!
想要回傳多個值怎麼辦
參加下周演算法小社!
std::pair
struct
Void
只能做為函數類型 , 不能作為變數型別
void im_lemonilemon_status() {
cout << "lemon tested positive\n";
}
void沒有回傳變數,可以不用return
一些內建很好用的函式
不過很多都要引用對應標頭檔喔~
gcd(a,b)
:回傳a和b的最大公因數
lcm(a,b)
:回傳a和b的最小公倍數
swap(a,b)
:交換a和b
max(a,b)
:回傳a或b較大的那個
min(a,b)
:回傳a或b較小的那個
abs(n)
:回傳絕對值n
換你們實作幾個
swap(a, b)
交換a, b的值
min(a, b)
回傳比較小的那個
gcd(a, b)
回傳最大公因數
zj a024
Min
int min(int a, int b){
if(a<b){
return a;
}else{
return b;
}
}
gcd(1)
int gcd(int a, int b){
if(a>b) swap(a, b);
while(a!=b){
if(a > b){
a -= b;
} else{
b -= a;
}
}
return a;
}
gcd(2)
int gcd(int a, int b){
if(a<b) swap(a,b);
int tmp = 1;
while(tmp != 0){
tmp=a%b;
a=b;
b=tmp;
}
return a;
}
Swap
void swap(int &a, int &b){
//&是參考,之後會學到
int temp;
temp = a;
a = b;
b = temp;
}
那麼來試著實作剩下幾個吧🥳
lcm(a,b)
:回傳a和b的最小公倍數
min(a,b)
:回傳a或b較小的那個
abs(n)
:回傳絕對值n
桿蟹各位今日的參與
祝我們不會被\(imlemonilemon\)傳染