求1+2+3…+n
求1+2+3…+n,要求不能使用乘除法、for、while、if、else、switch、case以及条件判断语句。
思路:函数栈,递归操作。递归结束条件通过2次取反操作(!!n)来判断。!!0 = fasle,!!(!0) = true.
参考代码:
root@gt:/home/git/Code# ./a.out sum:55
root@gt:/home/git/Code# cat sum.c #include <stdio.h>
typedef int(*func)(int);
int end(int n)
{
return 0;
}
int sum(int n)
{
func f[2] = {end,sum};
return n + f[!!n](n-1);
}
int main()
{
int res = sum(10);
printf("sum:%d\n",res);
return 0;
}