题目
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
解题
直接求和公式sum=(1+n)n/2,有乘法除法,+-模型*/,需要for
这是一道非常老的面试题,今天又遇到了就记录下吧,等学的更熟练时,再补充解法
#include <bits/stdc++.h>
using namespace std;
long long Cal(long long n,long long &sum)
{
n&&Cal(n-1,sum);//利用与门特性//这里我想到了用STL时常见的RE就是因为结构为空,但是执行语句却是读取等操作
return sum+=n;
}
int main(void)
{
long long n;
while(cin>>n)
{
long long sum = 0;
printf("%I64d\n",Cal(n,sum));
}
}