面试题64:求1+2+…+n
题目
求 1+2+...+n
,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
解法1:利用数组大小
class Solution {
public:
int sumNums(int n) {
bool sum[n][n+1];
return sizeof(sum)/2;
}
};
解法2:利用虚函数
要点:
类型前置声明
public函数
class A;
A* arr[2];
class A{
public:
virtual int Sum(int n){
return 0;
}
};
class B :public A{
public:
virtual int Sum(int n ){
return arr[!!n]->Sum(n-1) +n;
}
};
class Solution {
public:
int sumNums(int n) {
A a;
B b;
arr[0] = &a;
arr[1] = &b;
return b.Sum(n);
}
};