题目:
求1+2+…+n,
要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
网上看到一种宏定义的写法不是很理解,还有一种递归的写法,很巧妙,学习了。
代码如下:
#include <stdio.h>
#include <stdlib.h>
int sum(int n)
{
int tmp = 0;
(n)&&(tmp = sum(n-1));//当n=0时,不再执行(tmp = sum(n-1))
return n+tmp;
}
int main(void)
{
printf("1+2+...+100 = %d\n",sum(100));
return 0;
}
关于那段宏定义,我再看看,稍后贴出