一次性AC。
方法1的重点是(n>0) && (n=getSum(n-1)+n);,它的计算顺序很重要,只有在第一个条件满足时才会执行第二个条件。所以形成了if else的逻辑。
方法1(递归):
class Solution {
public:
int getSum(int n) {
(n>0) && (n=getSum(n-1)+n);
return n;
}
};
方法2的重点是几何图形求解,可以把n行n+1列的网格想象成char类型的二维数组,因为char类型的大小是1字节的,相当于一个小格就是一个字节,所以算出char类型的二维数组的大小后再>>1就可以了。
方法2:
class Solution {
public:
int getSum(int n) {
char c[n][n+1];
return sizeof(c)>>1;
}
};