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(  );  //輸出一個換行,不加的話,就會在一排過去,影響美觀
        }
    }
}

 

行了 ,寫完了,大家好好理解一下,遞歸函數那個返回值哪里,多理解一下,有哪里寫的不好的,不對的,請多多指點一下

 

                                                      

                                                        紳士ゝ圖圖.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM