【解題】d002: 習題 Q-1-2. 合成函數(2) (APCS201902)

題目連結

d002: 習題 Q-1-2. 合成函數(2) (APCS201902)

我的想法

利用遞迴做函數的輸入及計算,同 d001: 例題 P-1-1. 合成函數(1)

參考解答

d002
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <bits/stdc++.h>
#define ouo ios_base::sync_with_stdio(false), cin.tie(0)
#define ll long long
#define db double
using namespace std;

int eval() {
int x, y, z;
char token[5];
cin >> token;
if (token[0] == 'f') {
x = eval();
return 2 * x - 3;
} else if (token[0] == 'g') {
x = eval();
y = eval();
return 2 * x + y - 7;
} else if (token[0] == 'h') {
x = eval();
y = eval();
z = eval();
return 3 * x - 2 * y + z;
} else {
return atoi(token);
}
}

int main() {
cout << eval() << "\n";
return 0;
}