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(  );  //输出一个换行,不加的话,就会在一排过去,影响美观
            }
        }
    }

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

                                                          

                                                            绅士ゝ图图.

  • 相关阅读:
    快速幂模板
    部分有关素数的题
    POJ 3624 Charm Bracelet (01背包)
    51Nod 1085 背包问题 (01背包)
    POJ 1789 Truck History (Kruskal 最小生成树)
    HDU 1996 汉诺塔VI
    HDU 2511 汉诺塔X
    HDU 2175 汉诺塔IX (递推)
    HDU 2077 汉诺塔IV (递推)
    HDU 2064 汉诺塔III (递推)
  • 原文地址:https://www.cnblogs.com/xrmqbl/p/4693843.html
Copyright © 2011-2022 走看看