A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lorem 中级黑马   /  2016-2-26 19:06  /  841 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数字累加/素数累加/示例代码
#include <iostream>


int sum(int);
int judge(int);
int sumOfPlain(int);
int main(int argc, char** argv) {
   
    //printf("%d\n",sum(3));
    //printf("%d\n",judge(5));
    printf("%d\n",sumOfPlain(10)); //2 3 5 7
    return 0;
}
int sum(int a){
    if(a<=0){
        return 0;
    }
    else if(a==1){
        return 1;
    }
    else
    return a+sum(a-1);
}
/**
    判断是否是 素数,是的话,就返回它本身否则就返回0
*/
int judge(int a){
    //有三种方式第一种是:一直到a-1
    //验证过是到 a/2  但是 由于不存在 一半儿的这种情况,所以我们不妨多加一个数儿
    //再有就是  一直除到开方,的这个范围。如果还是除不开,那就除不开了。
    for(int i=2;i<a/2+1;i++){
        if(a%i==0){
            return 0;
        }
    }
    return a;
}
int sumOfPlain(int a){
    int afterJ = judge(a);
    if(a<=1){
        return 0;
    }
    else if(a==2){
        return 2;
    }
    else{
        return afterJ+sumOfPlain(a-1);
    }
}
关于递归:
递归的优点:给某些问题提供了最简单算法:汉诺塔,二分查找,快速排序,斐波那契数列。缺点:(如果没有合适的出口)将会很快耗尽计算机的资源

评分

参与人数 2黑马币 +8 收起 理由
小小笑笑 + 3 很给力!
ydy2511000 + 5

查看全部评分

1 个回复

倒序浏览
厉害厉害
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马