zoukankan      html  css  js  c++  java
  • 【Java方法的递归调用 04】

    一、方法的递归

    方法自己调用自己

    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+"
    resum2== "+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;
        }
    }
  • 相关阅读:
    servlet多线程同步问题
    servlet之request
    servlet方法
    非静态内部类不能有静态成员
    接口与抽象类的区别
    枚举
    Install CUDA 6.0 on Ubuntu 14.04 LTS
    Introduction to Deep Learning Algorithms
    codeblocks 使用汇总
    矩阵奇异值分解(SVD)及其应用
  • 原文地址:https://www.cnblogs.com/frankruby/p/11352152.html
Copyright © 2011-2022 走看看