一、方法的遞歸
方法自己調用自己
package com.company.Mothod; /** * @Created by IntelliJ IDEA. * @Author tk * @Date 2019/8/9 * @Time 15:26 */ public class MethodTest06 { public static void main(String[] args){ int resum1=sum(100); int resum2=sum(99); System.out.println("resum1== "+resum1+"\nresum2== "+resum2); int reValue=reSum(5); System.out.println("reValue== "+reValue); int resValuesum = resValuesum(6); System.out.println("resValuesum== "+resValuesum); int resValueSum = resValueSum(6); System.out.println("resValueSum== "+resValueSum); } //未使用遞歸實現1~n的和 public static int sum(int n){ int sum = 0; for(int i=1;i<=n;i++){ sum += i; } return sum; } //使用遞歸實現1~n的和(遞歸調用:方法自己調用自己) public static int reSum(int n){ if(n==1){ return 1; }else{ return n+reSum(n-1); } } //使用遞歸和未遞歸實現1~n的乘積 public static int resValuesum(int n){ int sum =1; for(int i=1;i<=n;i++){ sum *= i; } return sum; } public static int resValueSum(int n){ if(n==1){ return 1; }else{ return n*resValueSum(n-1); } } }
課后練習題
package com.company.Mothod; /** * @Created by IntelliJ IDEA. * @Author tk * @Date 2019/8/9 * @Time 17:43 */ /* 【程序1】 打印出100-999中所有的"水仙花數",所謂"水仙花數"是指一 個三位數,其各位數字立方和等於該數本身。例如: 153是一個"水仙花數",因為153=1的三次方+5的三次方 +3的三次方。 1.程序分析:利用for循環控制100-999個數,每個數分解 出個位,十位,百位。 */ public class MethodTest07 { public static void main(String[] args){ for(int i=100;i<1000;i++){ if(num(i)){ System.out.println(i+"是水仙花數"); } } } public static boolean num(int n){ int baiwei = n/100; int shiwei = n/10%10; int gewei = n%100%10; if(n == sxh(baiwei)+sxh(shiwei)+sxh(gewei)){ return true; }else { return false; } } public static int sxh(int num){ return num * num * num ; } }
package com.company.Mothod; /** * @Created by IntelliJ IDEA. * @Author tk * @Date 2019/8/13 * @Time 10:51 */ /* 程序2】 某市的出租車計費標准為:3公里以內10元,3公里以后每 加0.5公里加收1元;每等待2.5分鍾加收1元;超過15公里 的加收原價的50%為空駛費。 要求編寫程序,對於任意給定的里程數(單位:公里)和 等待時間(單位:秒)計算出應付車費 */ public class MethodTest08 { public static void main(String[] args){ double licheng = 16.8; int waitTime = 200; double money = lichengchefei(waitTime,licheng); System.out.println("行駛里程:"+licheng+" 等待時間:"+waitTime+" 應付車費:"+money+" 元"); } /* 計算里程和等待時間所需要的車費 */ public static double lichengchefei(int waitTime, double lichen){ double timeMoney =timeMoney(waitTime); double lichengMoney = 0.0; if(lichen<=3){ lichengMoney = 10; }else{ lichengMoney = (int) ((lichen-3)/0.5)*1 +10.0; if(lichen > 15){ lichengMoney *= 1.5; } } double money = timeMoney+lichengMoney; return money; } //計算等待時間所需要的車費 public static double timeMoney(int waitTime){ double timeMoney = (waitTime/150)*1; return timeMoney; } }
package com.company.Mothod; /** * @Created by IntelliJ IDEA. * @Author tk * @Date 2019/8/14 * @Time 10:11 */ /* 【程序3】 某電信公司的市內通話費計算標准如下:三分鍾內0.2元, 三分鍾后每增加一分鍾增加0.1元,不足一分鍾的按一分 鍾計算。要求編寫程序,給定一個通話時間(單位:秒) 計算出應收費金額。 */ public class MethodTest09 { public static void main(String[] args){ int time = 2000; double huafei=huafei(time); System.out.println("收取費用:"+huafei+" 元"); } public static double huafei(int m){ double money =0.0; if(m<=180){ money = 0.2; }else{ money = (m-180)/60*0.1+0.2; if((m%60)!=1){ money +=0.1; } } return money; } }