Neo's Blog

不抽象就无法深入思考
不还原就看不到本来面目!

0%

奇技淫巧-特殊的累加

求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

样例
输入:10

输出:55

思路

常用技巧: 通过!n来判定n是否等于0

代码

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
typedef int (*handler)(int);
handler fn[2];

int dfs(int n) {
handler myfn= fn[!!n];
return myfn(n);
}

int dfs_base(int n) {
return 0;
}

int dfs_normal(int n) {
return n + dfs(n - 1);
}

class Solution {
public:
int getSum(int n) {
fn[0] = dfs_base;
fn[1] = dfs_normal;
return dfs(n);
}
};

你的支持是我坚持的最大动力!