在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码,求出结果
public static int sum(int a,int b) {
return a+b;
}
public static double sum(double a,double b,double c) {
return a+b+c;
}
在同一个类中定义多个方法:要求不仅可以求2个整数的最大值,还可以求3个小数的最大值?
public static int max(int a,int b) {
return Math.max(a,b);
}
public static double max(double a,double b,double c) {
double m = Math.max(a,b);
return Math.max(m,c);
}
思路:

完整的操作过程:

代码实现:
public static void print(int n){
if(n>9){
print(n/10);
}
System.out.print(n%10+" ");
}
public static void main(String[] args){
int a = 1234;
print(a);
}思路:
终止条件:在这个问题中,我们选择n == 1作为终止条件,因为当n为1时,1到n的和就是1本身
递归实现1-10相加的操作,我们要把这个问题拆分成一个个相同操作的子问题
子问题:1+2 1+2+3 1+2+3+4 ......这是归的操作
当我们把10递进去的时候要一步一步得到1 2 3 4...,通过相加操作让它们关联起来
代码实现:
public static int sumption(int n){
if(n==1){
return 1;
}
return n+sumption(n-1);
}
public static void main(String[] args) {
int n = 10;
int ret = sumption(n);
System.out.println(ret);
}思路:
5!= 5*4*3*2*1
拆分成相同的子问题,1*2 1*2*3 1*2*3*4....当进行归操作时要完成这些操作
我们求n的阶乘把n递进去,一步一步找到最小的1,然后进行归的操作,并通过*操作符关联起来
代码实现:
import java.util.Scanner;
public static int fac(int n){
if(n==1){
return 1;
}
return n*fac(n-1);
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int ret = fac(N);
System.out.println(ret);
}import java.util.Scanner;
public static int fibonaci(int n){
if(n==1){
return 0;
}else if(n==2){
return 1 ;
}
return fibonaci(n-1)+fibonaci(n-2);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int fib = fibonaci(n);
System.out.println(fib);
}把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。
有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:
(1)每次只能移动一个圆盘; (2)大盘不能叠在小盘上面。

算法分析:n为圆盘的数量,A,B,C为所给的柱子 当n=1,只需把盘子移动a–>c即可
move(A,C);当n>1时, 第一次移动,要把A柱子上的前n-1个移动到B柱子上;
hanoi(n-1,A,C,B);
第二次移动,直接把A柱子上的最后一个移动到C柱子上;
move(A,C);
第三次移动,把B柱子上的n-1个柱子通过柱子A移动到柱子C上。(图3)
hanoi(n-1,B,A,C);
综上:


public static void move(char n1,char n2){
System.out.println(n1+"->"+n2);
}
public static void hannoi(int n,char pos1,char pos2,char pos3){
if(n==1){
move(pos1,pos3);
}else{
hannoi(n-1,pos1,pos3,pos2);
move(pos1,pos3);
hannoi(n-1,pos2,pos1,pos3);
}
}
public static void main(String[] args){
int n = 3;
char a='A';
char b='B';
char c='C';
hannoi(n,a,b,c);
}