for、while的循环套用和函数的递归
一、集成开发工具Eclipse
1.1 下载
- 官网下载
- 注意选择合适的镜像
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调用结束啦");
}
}

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);
}
}
for、while的循环套用和函数的递归的更多相关文章
- QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数
QT源码解析(一) QT创建窗口程序.消息循环和WinMain函数 分类: QT2009-10-28 13:33 17695人阅读 评论(13) 收藏 举报 qtapplicationwindowse ...
- 7.1 itertools--高效循环的创建函数
7. 函数式编程库 本库主要提供了支持函数式编程的函数和类,以及提供通用调用对象. 7.1 itertools--高效循环的创建函数 本模块主要提供了迭代器方面的操作函数,跟语言API.Haskell ...
- 指针数组的初始化和遍历,并且通过for循环方式、函数传参方式进行指针数组的遍历
/************************************************************************* > File Name: message.c ...
- shell脚本之循环语句与函数
shell脚本之循环语句与函数 echo的用法: echo -n #表示不换行输出 echo -e #输出转义字符,将转义后的内容输出到屏幕上 转义字符: \n :换行,被输出的字符从"\n ...
- 你好,C++(27)在一个函数内部调用它自己本身 5.1.5 函数的递归调用
5.1.5 函数的递归调用 在函数调用中,通常我们都是在一个函数中调用另外一个函数,以此来完成其中的某部分功能.例如,我们在main()主函数中调用PowerSum()函数来计算两个数的平方和,而在P ...
- C51函数的递归调用
前几天在写C51程序时用到了递归,简单程序如下: void WRITE_ADD(uchar addr,uchar wbyte) { START(); //先发送起始信号 WRITE_BYTE(0xa0 ...
- 利用php函数mkdir递归创建层级目录
项目开发中免不了要在服务器上创建文件夹,比如上传图片时的目录,模板解析时的目录等.这不当前手下的项目就用到了这个,于是总结了几个循环创建层级目录的方法. php默认的mkdir一次只能创建一层目录,而 ...
- Python基础(协程函数、内置函数、递归、模块和包)-day05
写在前面 上课第五天,打卡: 凭着爱,再回首: 一.协程函数(生成器:yield的表达式形式) 1.yield 的语句形式: yield 1 - 这种方式在 Python基础(函数部分)-day04 ...
- PYTHON-匿名函数,递归与二分法,面向过程编程
"""匿名函数1 什么是匿名函数 def定义的是有名函数:特点是可以通过名字重复调用 def func(): #func=函数的内存地址 pass 匿名函数就是没有名字的 ...
随机推荐
- KMP:补齐循环节
首先要明白:如果一个串需要至少添加x(x>=0)个字符才能是有>=2个循环节的串,那么我可以只在串末尾添加,不需要去串头添加.(比如串cabc,循环节是abc,我可以在尾部添加ab即可.) ...
- cf-1230C Anadi and Domino
题目链接:http://codeforces.com/contest/1230/problem/C 题意: 有21 个多米诺骨牌,给定一个无向图(无自环,无重边),一条边上可以放一个多米诺骨牌.如果两 ...
- hdu 13394 Minimum Inversion Number 线段树
题意: 首先给你一个长度为n的序列v,你需要首先找出来逆序对(i<j && v[i]>v[j]) 然后把这个序列的最后一个元素放在第一个位置上,其他元素都向后移动一位. 一 ...
- Codeforces Round #670 (Div. 2) A. Subset Mex (贪心)
题意:给你一长度为\(n\)的序列,将其分为两个集合,求两个集合中未出现的最小元素的最大值, 题解:用桶存一下每个元素的个数,两次枚举\([1,100]\),找出两个最小值即可. 代码: int t; ...
- 洛谷 P3385 【模板】负环 (SPFA)
题意:有一个\(n\)个点的有向图,从\(1\)出发,问是否有负环. 题解:我们可以用SPFA来进行判断,在更新边的时候,同时更新路径的边数,因为假如有负环的话,SPFA这个过程一定会无限重复的遍历这 ...
- OpenStack Train版-14.安装块存储服务cinder(存储节点)
安装cindoer块存储服务节点(存储节点192.168.0.40)使用默认的LVM卷方法,之后改为ceph存储 安装LVM软件包 [root@cinder01 ~]# yum install lvm ...
- 牛客网-Beautiful Land 【01背包 + 思维】
链接:https://www.nowcoder.com/acm/contest/119/F来源:牛客网 Now HUST got a big land whose capacity is C to p ...
- 线程同步之信号量(sem_init,sem_post,sem_wait)
信号量和互斥锁(mutex)的区别:互斥锁只允许一个线程进入临界区,而信号量允许多个线程同时进入临界区. 不多做解释,要使用信号量同步,需要包含头文件semaphore.h. 主要用到的函数: int ...
- pub package all in one
pub package all in one best practice The pubspec file https://dart.dev/tools/pub/pubspec demo name: ...
- JavaScript Learning Paths(ES5/ES6/ES-Next)
JavaScript Learning Paths(ES5/ES6/ES-Next) JavaScript Expert refs https://developer.mozilla.org/en-U ...