写在前面
Java中的方法定义都是相互独立的,即一个方法的方法体里不能包含另一个方法的定义。
但是一个方法体里的方法却可以调用另一个方法。我们称之为调用。
注:方法可以重载,可以定义多个同名的方法,但是参数的类型,参数的个数必须不同,方法重载用于解决在同一个类中几个不同方法完成同一任务的问题。
一、无参
格式:访问修饰符 void 方法名(形参列表){
//方法体
}
ForExample:
public class Factorial{ //定义主类
public void arry() //定义方法
{
System.out.println("Hellow World!")
return 0;
}
public static void main(String[] args)
{
Factorial ac = new Factorial(); //创建对象为ac
ac.arry(); //对象.方法() 调用a方法
}
}
2、无参返回值
public class Factorial{ //定义主类
public void arry() //定义方法
{
System.out.println("Hellow World!")
return 0;
}
public static void main(String[] args)
{
Factorial ac = new Factorial(); //创建对象为ac
ac.arry(); //对象.方法() 调用a方法
}
}
二、有参(static静态/类变量)
[修饰符] 类型 方法名([参数列表]) //方法头
{
//方法体
}
比如求两个数的最大公约数
public static void main(String[] args) {
System.out.println("8和14的最大公约数是"+max(8,14)); //调用方法
}
static int max(int a,int b){ //定义的有参有返回值方法
int min=a;
if(b<a)
min=a;
for (int i=min;i>0;i--)
{
if(a%i==0&&b%i==0)
return i;
}
return 0; //没找到返回零
}
}
递归算法:
如果一个问题可以用递归算法求解,通常这个问题需要满足两个条件:一原问题可以分解成若干
个相对简单且相同的子问题,二是简单到一定程度的子问题可以直接求解。
设计递归算法需要解决两个问题:一是递归计算公式,二是递归结束条件
求阶乘
public static void main(String[] args)
{
System.out.println("请输入要测试的数字");
Scanner nub = new Scanner(System.in);
RecursionFactorial ac = new RecursionFactorial();
int number = nub.nextInt();
System.out.println("最后阶乘为"+sh(number));
}
public static int sh(int sd){
int ap=1;
for(int i=1;i<=sd;i++)
{
ap*=i;
System.out.printf("%d * %d\n",ap,i);
}
return ap;
}
}