--- tags: 2021CRC Extra Resources title: 社課額外補充教材:函式與遞迴 --- # 社課額外補充教材:函式與遞迴 如果你覺得社課還算輕鬆,這裡提供你一些額外的補充教材。 這些是我們在備課的時候覺得稍微進階,或是篇幅太多,而沒有放在正式社課的內容。 --- 這邊有目錄,左邊也有,可以跳到自己想看的地方 [TOC] --- 建議必看的地方: - 生命週期 --- # 生命週期 函式也有生命週期,始於宣告,終於程式結束 ```cpp= #include<iostream> int main(){ greet(); } void greet(){ std::cout<<"Hello world"; return; } ``` 這樣會出錯,greet必須要在使用前宣告 ```cpp= #include<iostream> void greet(){ std::cout<<"Hello world"; return; } int main(){ greet(); } ``` ## 如果我不想呢? 要在使用前打上這串 ```cpp= type 函式名稱(type1 name1, type2 name2...); ``` 以上面的例子來說 ```cpp= #include<iostream> void greet(); int main(){ greet(); } void greet(){ std::cout<<"Hello world"; return; } ``` --- ## 想想你能用遞迴做到什麼吧 - greedy - bubble sort - fast paw - ! (我指的是數學的階層) - P - C - 遍歷法 - 深度優先 - 廣度優先 - 回溯法 - 列舉法 --- ### 其他題目 ```mediawiki= 輸入說明: 輸入有 m+2 個值 第一個是 n 的初始值,第二個代表後面會有 m 個指令 第三個之後會出現 1~6 的整數,分別代表對 n 執行的動作 1 代表 n +1 2 代表 n -1 3 代表 n *2 4 代表 n /2 5 代表 n 先 +1 再 *2 6 代表 n 先 -1 再 /2 輸出說明: n最後的值 ``` ```mediawiki= 範例輸入: 3 1 1 範例輸出: 4 ``` :::spoiler 解答 ```cpp= #include<iostream> using namespace std; int n, m; //n,m是全域變數,在每個函式內都可以用 int add(){ n += 1;} int minu(){ n -= 1;} int multiply(){ n *= 2;} int divide(){ n /= 2;} //plus 和 minus 是保留字 int main() { cin >> n >> m; while(m--) { int l; cin >> l; switch(l){ case 1: add(); break; case 2: minu(); break; case 3: multiply(); break; case 4: divide(); break; case 5: add(); multiply(); break; case 6: minu(); divide(); break; } } cout << n; } ``` :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up