题目
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
一、利用逻辑与&&的短路条件,递归实现
#include <iostream>
using namespace std;
class Solution {
public:
int Sum_Solution(int n) {
int ans = n;
// &&就是逻辑与,逻辑与有个短路特点,前面为假,后面不计算。即递归终止条件
ans && (ans = ans + Sum_Solution(n - 1));
return ans;
}
};
int main()
{
Solution s;
cout << s.Sum_Solution(4);
system("pause");
return 0;
}
二、构造函数实现
#include <iostream>
using namespace std;
class Solution {
public:
Solution() { n++; sum += n; }
static void reset() { n = 0; sum = 0; }
static int getSum() { return sum; }
private:
static int n;
static int sum;
};
int Solution::n = 0;
int Solution::sum = 0;
int main()
{
Solution::reset();
Solution * p = new Solution[4];
delete[]p;
p = nullptr;
cout << Solution::getSum();
system("pause");
return 0;
}
题目:
不用中间变量交换 a ,b
#include <iostream>
using namespace std;
void exchangeAB(int a, int b)
{
a = a + b;
b = a - b;
a = a - b;
cout << a << b;
}
void exchangeABbyte(int a, int b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
cout << a << b;
}
int main()
{
exchangeAB(4, 5);
cout << endl;
exchangeABbyte(2, 3);
cout << endl;
system("pause");
return 0;
}