求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句
题目比较变态。起初不愿意多想,只知道模板的发现是由于某人发现在编译打出的错误信息计算出了值,于是才有后面的故事。第一想法的静态模板编译递归计算。
后来看到一个比较好的,是用表达式作为防御性编程——作为递归的条件(无判断),比较巧妙,于是sharing一下。
#include <stdio.h>
int sum(int n)
{
int tmp = 0;
(n)&&(tmp = sum(n-1));
return n+tmp;
}
int main()
{
printf("%d\n",sum(10));
return 0;
}