for、while的循环套用和函数的递归

一、集成开发工具Eclipse

1.1 下载

  • 官网下载
    • https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2020-06/R/eclipse-jee-2020-06-R-win32-x86_64.zip
  • 注意选择合适的镜像

1.2 安装

  • 绿色版软件
  • 无序安装,可以直接解压后运行

二、在Eclipse中创建项目

2.1 创建项目

  • File—》new —》Java Project

2.2 创建第一个java文件

  • File -->new -->class

2.3 常用设置

  • window – >preperfences

2.4 快捷键

  • 能快速实现一些功能的组合键

三、for循环嵌套

3.1 定义

  • for循环中再书写一个for循环

3.2 for循环输出图形

package com.qf.day06;

public class Demo03 {
	public static void main(String[] args) {
		/**
		 * 	*
		 * 	* *
		 * 	* * * 
		 * 	* * * * 
		 * 	* * * * *
		 * 	* * * * * * 
		 *  * * * * * * * 
		 *  * * * * * * * * 
		 *  * * * * * * * * * 
		 *  
		 *  行数	m	n
		 *  	1	1
		 *  	2	2
		 *  	
		 */
		
		// 确定打印的行数
		for (int i = 0; i < 9; i++) {
			// 确定打印的列数
			for (int j = 0; j <= i; j++) {
				System.out.print("* ");
			}
			
			System.out.println();
		}
		
		System.out.println("==================");
		
		for (int i = 0; i < 9; i++) {
			for (int j = 0; j < (9-i); j++) {
				System.out.print("* ");
			}
			
			System.out.println();
		}
	}
}

3.3 for循环输出九九乘法表

package com.qf.day06;

public class Demo04 {
	public static void main(String[] args) {
		/**
		 * for循环实现九九乘法表
		 */
		for (int i = 1; i <= 9; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print(j + "*"+i+"="+(i*j)+"\t");
			}
			
			System.out.println();
		}
	}
}

四、while循环嵌套

4.1 定义

  • while循环中执行的循环内容还是while循环

4.2 输出图形

package com.qf.day06;

public class Demo05 {
	public static void main(String[] args) {
		/**
		 * 	*
		 * 	* *
		 * 	* * * 
		 * 	* * * * 
		 * 	* * * * *
		 * 	* * * * * * 
		 *  * * * * * * * 
		 *  * * * * * * * * 
		 *  * * * * * * * * * 
		 *  
		 *  行数	m	n
		 *  	1	1
		 *  	2	2
		 *  	
		 */
		
		// 开启外层循环,确定行数
		int i = 0;
		while (i < 9) {
			// 开启内层循环,确定列数
			int j = 0;
			while(j <= i) {
				System.out.print("* ");
				
				j++;
			}
			System.out.println();
			
			i++;
		}
	}
}

4.3 输出九九乘法表

package com.qf.day06;

public class Demo06 {
	public static void main(String[] args) {
		/**
		 * while循环输出乘法表
		 */
		
		int i = 1;
		while(i <= 9) {
			// 内层循环,控制输出的列数
			int j = 1;
			while(j <= i) {
				System.out.print(j + "*" + i + "=" + (i*j) + "\t");
				
				j++;
			}
			System.out.println();
			i++;
		}
	}
}

百钱买百鸡问题

package com.qf.day06;

public class Demo07 {
	public static void main(String[] args) {
		/**
		 * 百钱买百鸡
		 * 	今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡百只,问鸡翁、母、鶵各几何?
		 * 	答曰:鸡翁四,值钱二十;鸡母十八,值钱五十四;鸡鶵七十八,值钱二十六。
		 * 	又答:鸡翁八,值钱四十;鸡 母十一,值钱三十三,鸡鶵八十一,值钱二十七。
		 * 	又答:鸡翁十二,值钱六十;鸡母四、值钱十二;鸡鶵八十 四,值钱二十八。”
		 */
		
		for (int g = 1; g < 20; g++) {
			for (int m = 1; m < 33; m++) {
				for (int x = 1; x < 100; x++) {
					// 花的金钱的100 && 买的数量是100
					if((g*5+m*3+x/3.0 == 100) && (g+m+x==100)) {
						System.out.println("鸡翁:" + g + ",鸡 母:" + m + ",鸡鶵:" + x);
						
					}
				}
			}
		}
	}
}

五、函数(方法)

5.1 定义

  • 完成指定功能的一段代码
  • 可以重复使用

5.2 语法

public static int add2num(int a,int b){
	int sum = a + b;
	return sum;
}

* public 
	访问权限修饰符,规定哪些地方可以访问
* static 
	静态修饰,表明当前的方法是不是静态方法,目前我们写的方法都是静态方法
* int
	方法的返回值类型,和返回值的类型保持一致
	方法运行结束的时候可能会给调用者一个结果,需要在此处确定返回结果的数据类型
* add2num
	方法的名字,可以通过这个名字来调用这个方法
	方法名字需要符合标识符明明规则
	方法名字需要见明知义
* (int a,int b)
	方法的参数列表
	调用方法的时候,方法汇总可能会执行一些用到外部参数的操作,这个时候就需要把这些数据放入调用方法的参数列表中
* int sum = a + b;
	函数主体,方法体
	方法具体执行的操作
* return sum;
	方法的返回值
	一个方法运行结束后返回给调用者的内容就书写在这里

5.3 函数书写的位置

  • 类中方法外
  • 是类的成员之一
  • 和其他方法是同级关系

5.4 函数的参数

  • 形参

    • 形式上的参数
    • 规定此方法需要哪些类型的数据
    • 定义在方法名字后面的小括号中
  • 实参

    • 实际参与运行的参数
    • 实参的个数、类型、顺序必须和形参的规定保持一致

package com.qf.func;

public class Demo05 {
	public static void main(String[] args) {
		System.out.println("床前明月光");
		printSign(10, "* ");
		
		System.out.println("疑是地上霜");
		printSign(10, "# ");
		
		System.out.println("举头望明月");
		// printSign("$",10);	// 实参的顺序需要和形参保持一致
		// printSign(10);		// 实参的个数需要和形参保持一致
		
	}
	
	/**
	 * 输出指定个数图形的方法
	 * @param count	图形的个数
	 * @param sign	具体的图形
	 */
	public static void printSign(int count,String sign) {
		for (int i = 0; i < count; i++) {
			System.out.print(sign);
		}
		System.out.println();
	}
}

5.5 函数返回值

  • 函数运行之后返回给调用者的结果

  • 返回值可以有也可以没有

  • 具体情况根据自己生产的需要和书写代码的习惯

  • 返回值和返回值类型要对应

    • 返回值类型有基本类型、引用类型、void
    • 当返回值类型是void的时候,return可以省略,也可以指数写return;
  • 方法的return后面不能再书写代码----写了也无法执行,方法遇到return就直接结束啦

package com.qf.func;

public class Demo6 {
	public static void main(String[] args) {
		save(1000);
		
		int money = take(1000);
		System.out.println(money);
		
	}
	
	public static int save(int money) {
		System.out.println("存入金额" + money);
		return money;
	}
	
	public static int take(int money) {
		return money;
		
		// System.out.println(money); return 就是结束方法,return后面的内容将不再执行
	}
}

5.6 函数使用案例

package com.qf.func;

public class Demo07 {
	public static void main(String[] args) {
		/**
		 * 函数根据参数列表和返回值可以分为4类
		 * 	无参数无返回值
		 * 	无参数有返回值
		 * 	有参数无返回值
		 * 	有参数有返回值
		 */
		int add2num = add2num(3, 5);
		System.out.println(add2num);
		
		printMul(10, 20);
	}
	
	
	/**
	 * 计算两个数字的和
	 * @param a	参数1
	 * @param b	参数2
	 * @return	返回计算的结果
	 */
	public static int add2num(int a,int b) {
		return a+b;
	}
	
	/**
	 * 计算两个数的商
	 * @param a	被除数
	 * @param b	除数
	 * @return	相除的结果
	 */
	public static double div2num(int a,int b) {
		return 1.0*a/b;
	}
	
	/**
	 * 获取圆周率
	 * @return	圆周率
	 */
	public static double getPI() {
		return 3.141592653589793;
	}
	
	/**
	 * 输出a和b的乘积
	 * @param a	第一个参数
	 * @param b	第二个参数
	 */
	public static void printMul(int a,int b) {
		System.out.println("a和b相乘的结果是:" + (a*b));
	}
}

5.7、方法的多级调用

package com.qf.func;

public class Demo01 {
	public static void main(String[] args) {
		System.out.println("准备调用show01");
		show01();
		System.out.println("main方法结束啦");
	}

	public static void show01() {
		System.out.println("show01被调用啦");
		
		System.out.println("在show01中调用show02");
		
		show02();
		
		System.out.println("show01调用show02结束");
		System.out.println("show01调用结束啦");
	}

	public static void show02() {
		System.out.println("show02被调用啦");
		
		System.out.println("在show02中调用show03");
		
		show03();
		
		System.out.println("show02调用show03结束");
		System.out.println("show02调用结束啦");
	}

	public static void show03() {
		System.out.println("show03被调用啦");
		
		System.out.println("show03啥也没干....");
		
		System.out.println("show03调用结束啦");
	}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4eNEOf2c-1614651656012)(方法多级调用运行过程.png)]

5.8、递归

  • 在方法中调用方法本身
  • 可能会造成无穷递归,需要设置合适的出口
package com.qf.func;

public class Demo03 {
	public static void main(String[] args) {
		int mul = getMul(5);
		System.out.println(mul);
	}

	/**
	 * 获取阶乘的方法
	 * @param num
	 * @return
	 */
	public static int getMul(int num) {
		/**
		 * 5!
		 * 	5*4*3*2*1 ===  
		 * 	5*4!
		 * 		5*4*3!
		 * 			5*4*3*2!
		 * 				5*4*3*2*1!
		 * 
		 */
		System.out.println(num);
		if (num == 1) {
			return 1;
		}
		return num * getMul(num-1);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值