求1+2+3...+n

求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;
}

    原文作者:ailx10
    原文地址: https://zhuanlan.zhihu.com/p/34764921
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞