今天在牛客网上看到一道面试题,感觉很有意思自己也思考了很长时间,希望可以分享下来,题目是这样描述的:
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
刚开始的时候我想1+2+3+…+n不正好是等差数列吗?直接使用等差数列的求和公式不就可以吗?n*(n+1)/2,但是公式中依然有乘法啊,所以这个想法被pass掉。
后来我就想到了逻辑运算中的逻辑与&&操作,这个操作有一个特性就是短路特性,如果当前面的条件成立的时候后面的条件就不再执行了,如果我用前面一个条件代表递归结束,后面一个条件代表递归执行,不正好可以实现这个目的吗?于是我写出了下面的代码:
size_t Sum_Sol