求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); } };
|