一、方法的递归
方法自己调用自己
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; } }
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; } }