您的位置:首页 > 教程资讯 > 网络编程 > C语言 > 递归练习

递归练习

发布于:2016-03-05 14:31:41   分享到:

数字累加

素数累加

示例代码:

#include 


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;i2+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);
    }
}

 关于递归:

递归的优点:给某些问题提供了最简单算法:汉诺塔,二分查找,快速排序,斐波那契数列。缺点:(如果没有合适的出口)将会很快耗尽计算机的资源,递归的程序难以理解和维护对于windows来说 屏幕啊,响应啊各种东西都不动了,但是对于linux来说,系统将会重启。Linux的内核是这样写的,当它的内存里面没有可以再利用的空间的时候就会自动重启。忽然想到了手机。。。自动重启,就是因为内存没有了,里面又是包装的linux的内核,所以。。。很多android的病毒都是先用一个递归让手机重启,然后安装上。


标签:

C语言 递归

关于我们  加入我们  版权声明  商务合作  友情链接  网站地图  站长统计

脚本大全-脚本语言之家-版权所有 

Copyright (C) 2016 jiaoben.net, All Rights Reserved