面向对象 -- 基础(B版)

课程笔记Day08

  • 递归方法
  • 构造方法
  • this和static
  • package和import

第一章 递归方法

第01节 基础理论

什么是递归呢?

在 Java 当中,递归指的是 方法自己调用自己的过程。(备注:递归需要有出口,需要能够终结)
思想:大事化小小事化了。

生活实例: 《和尚讲故事》
	从前有座山,山里有个庙,庙里有个老和尚,老和尚在给小和尚讲故事。
	从前有座山,山里有个庙,庙里有个老和尚,老和尚在给小和尚讲故事。
	从前有座山,山里有个庙,庙里有个老和尚,老和尚在给小和尚讲故事。
	从前有座山,山里有个庙,庙里有个老和尚,老和尚在给小和尚讲故事。
	从前有座山,山里有个庙,庙里有个老和尚,老和尚在给小和尚讲故事。
	。。。。。。。。
	从前有座山,山里有个庙,庙里有个老和尚,老和尚在给小和尚讲故事。
	
生活实例: 《编程的故事》
	我们在学习编程,搞钱,花钱,爽,空虚,寂寞,找对象,生娃。
	让娃去学习编程,搞钱,花钱,爽,空虚,寂寞,找对象,生娃。
	让娃去学习编程,搞钱,花钱,爽,空虚,寂寞,找对象,生娃。
	。。。。。。。
	让娃去学习编程,搞钱,花钱,爽,空虚,寂寞,找对象,生娃。

配图说明
在这里插入图片描述

第02节 快速入门

需求

采用递归的方式,计算5的阶乘。
阶乘: 5! = 5x4x3x2x1 = 120

分析

如果想要完成递归的操作,需要有三个步骤:
[1]写个方法  //递归是方法自己调用自己,说到递归,必须有方法
[2]找到规律  //罗列几项内容,通过罗列出来的数据,观察思考,找到规律
[3]找到出口  //什么时候,递归可以结束
===============================================
阶乘: 5! = 5x4x3x2x1 = 120
4! = 4x3x2x1
3! = 3x2x1
2! = 2x1
1! = 1
-------------
5! = 5x4!
4! = 4x3!
通项公式,如果是计算N的阶乘,应该怎么写呢?
N的阶乘 = N*(N-1)的阶乘;
=============================================
怎么找到出口呢?
什么时候结束啊?
当n=1的时候,就是结束,当n=1的时候,它的阶乘是几? 1
结束的时候,不要使用通项公式,其他情况,都是使用通项公式。

代码

//计算5的阶乘
public class Test03 {
   

    public static void main(String[] args) {
   
        //直接调用方法
        int jieGuo = jieCheng(5);
        System.out.println("jieGuo = " + jieGuo);
    }

    //写个方法
    public static int jieCheng(int n){
   
        //什么时候是出口?
        if (n == 1){
   
            return 1;
        }else{
   
            return n*jieCheng(n-1);
        }
    }
}

内存图
在这里插入图片描述

第03节 猴子分桃

题目

海滩上有一堆桃子和一只猴子。
猴子第一天,拿走了桃子的一半,又多拿一个。
猴子第二天,拿走了桃子的一半,又多拿一个。
猴子第三天,拿走了桃子的一半,又多拿一个。
猴子第四天,拿走了桃子的一半,又多拿一个。
猴子第五天,拿走了桃子的一半,又多拿一个。
。。。。。。
猴子第九天,拿走了桃子的一半,又多拿一个。
第十天的时候,最后剩余1个,请问原来第一天是多少个桃子?

代码

public class Test04 {
   

    public static void main(String[] args) {
   
        int tz = taozi(1);
        System.out.println("tz = " + tz);
    }

    public static int taozi(int day){
   
        if(day == 10){
   
            return 1;
        }else{
   
            return (taozi(day+1)+1)*2;
        }
    }
}

//猴子第一天,拿走了桃子的一半,又多拿一个。
//假设第10天剩余1个。
//那么第9天  (1+1)x2 = 4
//那么第8天  (4+1)x2 = 10
//那么第7天  (10+1)x2 = 22
// ....
//出口是第10天是1个

第二章 构造方法

第01节 基础理论

什么是构造方法呢?

构造方法是用来创建对象的方法,每一个Java类,都具有构造方法。
系统默认赠送你一个无参数构造方法,用来创建对象使用。肉眼是看不到的,系统默认赠送的方法。

默认赠送的方法,模样:
public 类名称(){

}

如果我们手动的给出构造方法,系统将不再赠送构造方法。(系统赠送的构造是用来创建对象的)

构造方法有什么特点? 【同时满足】

1. 构造方法的名称必须和类名称完全相同。
2. 没有返回值类型,注意 void 也不要写。

构造方法有什么作用呢?

1. 可以创建对象(创建对象的过程就是调用构造的过程)
2. 可以给成员变量初始化数据。
第02节 快速入门

老师类

public class Teacher {
   

    String name;
    int age;

    //这里存在构造方法
    public Teacher(){
   
        //帮我们进行初始化数据
        name = "华浩";
        age = 18;
    }

    //再写一个构造方法
    public Teacher(String name,int age){
   
        this.name = name;
        this.age = age;
    }
}

测试类

public class Test {
   

    public static void main(String[] args<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值