分享

算法21(求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句)

 白雪~~~ 2012-03-14

不用if/while等操作实现

解法:1:

求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;
 
解法2:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多