zoukankan      html  css  js  c++  java
  • Java/For循环/递归函数循环

    首先:java的重点和难点,命名和缓存

      这次咱们的内容主要用到:

        命名规则:大小写字母,下划线,美元符号$,数字,且数字不能打头

        变量的声明:数据类型划分内存空间,命名,赋值

        方法的声明:修饰符列表,返回值,方法名,形参列表,方法体

      示例:

        1, 如果让你计算1~100的奇数和,偶数和,还有1~100的和;

        2, 还有1~N的和

        3, 九九乘法表

    第一题,1~100的奇数和,偶数和,和

    先用for循环写一个

      for循环,for循环的运行规则,for(表达式1,表达式2,表达式3),先执行表达式1,并且只执行一次,表达式2进行判断,如果正确,就接着运行下面的程序,运行完成后,循环到表达式3,然后再判断表达式2,一直到表达式2判断错误,就会终止循环的运行
                循环三要素:初始值(表达式1),终止条件(表达式2),步长(表达式3),表达式2必须为boolean类型

      public class For_Ji_Ou{              //用public声明一个类,并且每个java文件中可以有多个public,但是只能有一个用public修饰的类,这个类的类名必须和文件名一致
        public static void main(String[] args){    //main方法,可以说是所有程序都在main方法里执行的
            int ji = 0;        //用int数据类型,开辟个int长度大小的空间,并给这个空间起个名字叫ji,并给它赋值为0;
            int ou = 0;        //用int数据类型,开辟个int长度大小的空间,并给这个空间起个名字叫ou,并给它赋值为0;
            int sum = 0;        //用int数据类型,开辟个int长度大小的空间,并给这个空间起个名字叫sum,并给它赋值为0;
            for(int i=0; i <=100 ; i+=2){      //for循环,初始值为0,终止条件为=100,步长为2
                ou += i;      // ou是咱们已经声明好的一个变量, 让ou += i  首先+=是吧左右两个 数值相加,再把相加的值赋值给左面,大家已经知道什么意思了吧,就是每次循环出来的i都和ou相加,
            }
            System.out.println( "1-100的偶数和为: "+ou );    //输出  
            for(int i=1; i <=100 ; i+=2){      //初始值为1
                ji += i;
            }
            System.out.println( "1-100的奇数和为: "+ji );
            for(int i=0; i <=100 ; ++i){      //初始值为1,步长也为1
                sum += i;
            }
            System.out.println( "1-100的和为: "+sum );
        }
    }
    用if写

      if()  {   如果判断正确,就执行下面语句

        java语句

    }else{  否则就执行下面语句

        java语句

    }

    public class If{
        public static void main(String[] args){
            int j = 0;    //跟上面for循环一样一样
            int o = 0;
            for(int i=0; i <=100 ; ++i){    //初始值为0,步长为1
                
            
            if (i % 2 == 1) {   //这里我们是算余数,如果除2余数为1,那就肯定是奇数了  对不对  我让奇数  执行下面语句
                j+=i;   // 每次都和i相加 再把值赋值给j
            }else{    //  余数不等于1   也就是偶数了  就执行下面语句
                o+=i;  // 每次都和i相加 再把值赋值给o
            }
        }
                System.out.println( "1-100的奇数和"+j );  //输出
                System.out.println( "1-100的偶数和"+o );  //输出
      }
    }

    第二题 用递归写一个1~N的和  

      首先什么是递归函数,就是跟for一样,是循环,函数的循环, 

    什么是递归调用,就是函数自己调用自己

    但是函数  不调用不执行,调用才执行,并且吧值返回到调用处

    递归和循环都一样,有共同的三要素 :  初始值, 终止条件, 步长

    public class Di_Gui{                //入口,public修饰的类
        public static void main(String[] args){     //main方法
            int s = 100;        //int数据类型声明变量 s   并赋值为100
            int q = a.m1(s);       //int数据类型声明q  并赋值  赋的值是一个函数的调用,首先先把函数运算完了,才能赋值吧,赋值完成后,才能进行下一步指令吧  因为java的运行时从上到下,从左往右执行的
            System.out.println( q );    //输出p
        }
    }
    class a {          //创建一个class类文件  为a
        public static int m1(int n){      // 创建一个m1方法,并且用 static修饰,所以这个方法是静态方法,静态方法的调用 : 类名.方法名();  如果在一个作用域就可以: 方法名();
            if (n==1) {       //如果n==1   就执行下面语句
                return 1;       //return  返回值,  返回值为1  就是如果运行到这一步,就把值赋值给m1,在终止整个函数
            }else{       //n不等于1的时候,就执行下面语句
                return n+m1(n-1);      //这是重点   返回值里面是个函数,我想返回值,得先把函数运行出来吧,而且这个函数,我传的实参是n-1,  而不是n了  这样不管n是多少,早晚有n到1的时候
            }
                
        }
    }

        return  n+m1(n-1);    运算大概顺序,看下面  
    /*
       
        10+m1(9)+9+m1(8)+.....+m1(1)

        假如上面s等于10的时候.是不是就等于m1(10);
        m1(10);当m1(10)时,值为= 10+m1(9)    最后再看后面的   =  10+9+8+7+6+5+4+3+2+1;                m1(9);当m1(9 )时,值为=  9 +m1(8)    最后再看后面的   =  9+8+7+6+5+4+3+2+1;
        m1(8) 当m1(8 )时,值为=  8 +m1(7)    最后再看后面的   =8+7+6+5+4+3+2+1;  
        m1(7) 当m1(7 )时,值为=  7 +m1(6)    最后再看后面的   =7+6+5+4+3+2+1;
        m1(6) 当m1(6 )时,值为=  6 +m1(5)    最后再看后面的   =6+5+4+3+2+1;
        m1(5) 当m1(5 )时,值为=  5 +m1(4)    最后再看后面的  =5+4+3+2+1;  
        m1(4) 当m1(4 )时,值为=  4 +m1(3)    最后再看后面的   =4+3+2+1;
        m1(3) 当m1(3 )时,值为=  3 +m1(2)    最后再看后面的   =3+2+1;
        m1(2) 当m1(2 )时,值为=  2 +m1(1)    最后再看后面的   =2+1;  
        m1(1) 当m1(1 )时,值为=  1   (因为当n=1是,返回值return 返回的是1  所以这里终止函数的运行,并把1 返回给m1)    
        */

    第三题:九九乘法表

    循环三要素 :  初始值, 终止条件, 步长

    /*
        使用嵌套的for循环打印九九乘法表
            
            1*1=1
            2*1=2 2*2=4
            .......
            9*1=9...............9*9=81

            行数和最大格子数相等
            
    */

    public class For_Cheng_Fa_Biao{      //public修饰的类,并且只能有一个,不用说了吧
        public static void main(String[] args){   //main方法
            for(int i=1; i <=9 ; ++i){    //循环,  记住,循环没循环一遍,都会把里面的值全部运行完,才算循环了一遍,所以我这嵌套循环,每次外面那个循环循环一次,里面那个循环都会循环完;
                for(int j=1; j <= i ; ++j){    //终止条件,不能大于i
                    System.out.print( j + "*" + i + "=" + (i*j) + " " );     //输出,结果为j*i=(j*i)  字符串里面的东西是直接输出的,并且字符串和值的连接符是 +
                }
                System.out.println(  );  //输出一个换行,不加的话,就会在一排过去,影响美观
            }
        }
    }

    行了 ,写完了,大家好好理解一下,递归函数那个返回值哪里,多理解一下,有哪里写的不好的,不对的,请多多指点一下

                                                          

                                                            绅士ゝ图图.

  • 相关阅读:
    hdoj_1556Color the ball
    wchar_t与char转换(总结)
    算法艺术——网络最大流
    poj_3268Silver Cow Party
    poj_2352Stars
    BellmanFord模板
    saas模式
    什么是管道
    什么是CMMI
    saas模式
  • 原文地址:https://www.cnblogs.com/xrmqbl/p/4693843.html
Copyright © 2011-2022 走看看