方法
在程序中被创建,在其他地方引用。
最好一个方法只做一个简单的功能,称为原子性。
方法重载
函数名字相同但是形参不同称为重载。
通过命令行传参
需要找到正确的包的位置
在src处传参
cd…/返回上一级
递归
A方法调用A方法,自己调用自己就叫递归
递归包含两部分:
递归头:什么时候不调用自身方法。没有头就会陷入死循环
递归体
步骤
边界条件:到边界后可以返回
前阶段:什么情况下反复调用
返回阶段:n(n-1)
java使用栈机制,嵌套层不能太多,会造成内存拥塞,影响机器性能
代码:递归
package com.yolanda.methods;
//2!=2*1
//3!=3*2*1
//阶乘
public class Demo05 {
public static void main(String[] args) {
System.out.println(f(16));
}
public static int f(int n){
if (n == 1) {
//递归头,这里程序执行到底了
return 1;
}else {
return n * f(n - 1);
}
}
}
作业:
package com.yolanda.methods;
import java.util.Scanner;
/*
* 作业:
* 写一个计算器,要求实现加减乘除功能,并且能够循环接受新的数据,通过用户交互实现。
* 4个方法加减乘除
* 利用循环+Switch进行用户交互
* 传递需要操作的两个数
* 输出结果
*/
public class Demo06 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入需要计算的类型:1.加法 2.减法 3.乘法 4.除法");
int judge=input.nextInt();
System.out.println("请输入两个数字用来计算:");
int num1=input.nextInt();
int num2=input.nextInt();
switch(judge){
case 1:
System.out.println(addNum(num1,num2));
break;
case 2:
System.out.println(minusNum(num1,num2));
break;
case 3:
System.out.println(multiplyNum(num1,num2));
break;
case 4:
System.out.println(divideNum(num1,num2));
break;
default:
System.out.println("输入类型错误!");
}
}
public static int addNum(int n1,int n2) {
return n1+n2;
}
public static int minusNum(int n1,int n2) {
int temp;
if (n1>=n2){
temp=n1;
n1=n2;
}else{
temp=n2;
}
return temp-n1;
}
public static int multiplyNum(int n1,int n2) {
return n1*n2;
}
public static int divideNum(int n1,int n2) {
return n1/n2;
}
}```