要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
解法:
使用 && 或 || 的特性
(1) p1 && p2,如果p1为假,则不用求p2的值,相当于
if(p1) {
p2;
}
(2) p1 || p2,如果p1为真,则不用求p2的值,相当于
if(!p1) {
p2;
}
故,使用递归实现
int fun(int n) {
n==0 || n += fun(n-1);
// 或者 n != 0 && n += fun(n-1);
return n;
}
更奇特的解法见 http://blog.csdn.net/yuucyf/article/details/6400601
将编译器的功能利用的淋漓尽致,不过感觉没什么实际意义。