---
###### tags: `課程`
---
Function Recursion
===
----
## 軟研數學小教室!
$f(x,y) = 3 x^x - \frac{x}{\frac{1}{y}} + y + 2$
g(t) =
t if (t < 2)
3 if (t = 2)
-t if (t > 2)
----
-> 想像成一種f(x)
給定一些數字 就會返回一些數值
----
函式就是一種可以運算的程式碼區塊,接收指令後,可以在裡面做出你要得到的結果
分為2種類型:
1. 內建函式
2. 自訂函式
---
## 內建函式
----
```cpp=
#include<函式庫名稱>
例如:
#include<math.h>
就可以使用 sqrt ( x ) x的開根號值
pow (x, y) x 的 y 次方
```
----
## 常見內建函式
----
### 有回傳值函數
```cpp=
int main() {
int a, b;
//有回傳值得函數
cout << sqrt(a) << endl;
cout << sqrt(a) << endl;
cout << pow(a, b) << endl;
cout << __gcd(a, b) << endl;
cout << __lg(a, b) << endl;
cout << max(a, b) << endl;
```
----
### 無回傳值
```cpp=
//無回傳值的函數
memset(arr, 0, sizeof( arr ));
sort(arr, arr + n);
cout << upper_bound(arr, arr, x) - arr << endl;
}
```
---
## 自訂函式
- 宣告位置:使用他之前
- 宣告方式
```cpp=
回傳型態 函數名稱(引數型態1 引數名稱1, ..., 引數型態n 引數名稱n){
要做的事情
return xxx;(如果有回傳值)
}
int fuc(int a, int b){
int k = a * b;
return k;
}
void hi(){
cout << "hi" << endl;
return;
}
```
----
1. 宣告函式在using namespace std;下
int main()前
2. 宣告函式型態
3.
## 主函式 main()
```cpp=
#include<iostream>
using namespace std;
int main(){
return 0;
}
```
---
# 遞迴
----
## 費氏數列
$a_n = a_{n-1} + a_{n-2}$
----
## 猜猜我是誰
```cpp=
#include <iostream>
int cnt, muti = 1;
int32_t main() {
return (cnt < 5 ? (muti *= ++cnt), main() : (std::cout << muti << '\n', 0));
}
```
----
{"metaMigratedAt":"2023-06-15T15:33:47.497Z","metaMigratedFrom":"Content","title":"Function Recursion","breaks":true,"contributors":"[{\"id\":\"82f46fc6-f9dd-4e98-8fe8-19fda0dc8ba3\",\"add\":0,\"del\":1},{\"id\":\"d00f6533-e69a-43c0-9ace-aa4bdb9a7ead\",\"add\":1467,\"del\":0}]"}