zoukankan      html  css  js  c++  java
  • 递归练习

    数字累加

    素数累加

    示例代码:

    #include <iostream>
    
    
    int sum(int);
    int judge(int);
    int sumOfPlain(int);
    int main(int argc, char** argv) {
        
        //printf("%d
    ",sum(3));
        //printf("%d
    ",judge(5));
        printf("%d
    ",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);
        }
    }

     关于递归:

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

  • 相关阅读:
    SDN第七次上机作业
    SDN第六次上机作业
    SDN第五次上机实验
    SDN阅读作业(二)
    软件评测——腾讯音视频
    SDN上机第四次作业
    SDN上机第三次作业
    SDN阅读作业
    SpringBoot整合Swagger2
    JavaWeb项目前后端分离
  • 原文地址:https://www.cnblogs.com/letben/p/5217329.html
Copyright © 2011-2022 走看看