public static void main(String[] args) {
int[] arr = {0, 1, 0, 1, 4};
System.out.println(findOnceNum(arr));
}
public static int findOnceNum(int[] arr) {
int a = 0;
for (int i = 0; i < arr.length; i++) {
a = a ^ arr[i];
}
return a;
}
2.求斐波那契数列的第n项。(迭代实现)
public class Test02 {
public static void main(String[] args) {
System.out.println(fib(1));
System.out.println(fib(9));
System.out.println(fib(39));
}
public static int fib(int num) {
int f1 = 1, f2 = 1, f3 = 1;
for (int i = 3; i <= num; i++) {
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
return f3;
}
}
3.求1!+2!+3!+4!+…+n!的和
public class Test03 {
public static void main(String[] args) {
System.out.println(sumFac(5));
System.out.println(sumFac(6));
}
public static int sumFac(int num) {
int sum = 0;
for (int i = 1; i <= num; i++) {
int fac = 1;
for (int j = 1; j <= i; j++) {
fac *= j;
}
sum += fac;
}
return sum;
}
}
4.求 N 的阶乘 。
public class Test04 {
public static void main(String[] args) {
System.out.println(fac(5));
System.out.println(fac(1));
}
public static int fac(int num) {
int fac = 1;
for (int i = 1; i <= num; i++) {
fac *= i;
}
return fac;
}
}
5.调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。
public class Test05 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6};
int[] arr1 = {1, 2, 3, 4, 5, 6, 7};
adjust(arr1);
System.out.println();
adjust(arr);
}
public static void adjust(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] % 2 != 0) {
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
System.out.print(arr[i] + " ");
}
}
}
public class Test06 {
public static void main(String[] args) {
System.out.println(max2(1, 2));
System.out.println(max2(3, 2));
System.out.println(max3(1, 2, 3));
System.out.println(max3(1, 3, 2));
}
public static int max2(int a, int b) {
return a > b ? a : b;
}
public static int max3(int a,int b,int c) {
int max1 = max2(a, b);
return max1 > c ? max1 : c;
}
}
public class Test07 {
public static void main(String[] args) {
System.out.println(max(1, 3));
System.out.println(max(1.4, 1.5));
System.out.println(max(1.6, 8.4, 5));
}
public static int max(int a,int b) {
return a > b ? a : b;
}
public static double max(double a,double b) {
return a > b ? a : b;
}
public static double max(double a,double b,int c) {
double max = max(a, b);
return max > c ? max : c;
}
}
8.在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码,求出结果
public class Test08 {
public static void main(String[] args) {
System.out.println(sum(1, 5));
System.out.println(sum(1.1, 2.4, 3.2));
}
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;
}
}
9.青蛙跳台阶
public class Test09 {
public static void main(String[] args) {
System.out.println(jumpFloor(1));
System.out.println(jumpFloor(5));
}
public static int jumpFloor(int num) {
if (num == 1) {
return 1;
}
if (num == 2) {
return 2;
}
return jumpFloor(num - 1) + jumpFloor(num - 2);
}
}
10.递归求斐波那契数列的第 N 项
public class Test10 {
public static void main(String[] args) {
System.out.println(fib(1));
System.out.println(fib(9));
}
public static int fib(int num) {
if (num == 1 || num == 2) {
return 1;
}
return fib(num - 1) + fib(num - 2);
}
}
11.递归求和
public class Test11 {
public static void main(String[] args) {
System.out.println(sum(1));
System.out.println(sum(10));
}
public static int sum(int num) {
if (num == 1) {
return 1;
}
return num + sum(num - 1);
}
}
12.汉诺塔问题
public class Test12 {
public static void main(String[] args) {
haoniTower(1,'A','B','C');
System.out.println();
haoniTower(2,'A','B','C');
System.out.println();
haoniTower(3,'A','B','C');
}
public static void move(char a,char b) {
System.out.print(a+"->"+b+" ");
}
public static void haoniTower(int num,char a,char b,char c) {
if (num == 1) {
move(a,c);
return;
}
haoniTower(num-1,a,c,b);
move(a,c);
haoniTower(num-1,b,a,c);
}
}
13.按顺序打印一个数字的每一位
public class Test13 {
public static void main(String[] args) {
print(1234);
}
public static void print(int num) {
if (num <= 9) {
System.out.print(num + " ");
} else {
print(num/10);
System.out.print(num%10+" ");
}
}
}
14.递归求1+2+3+4+…+10
public class Test14 {
public static void main(String[] args) {
System.out.println(sum(10));
}
public static int sum(int num) {
if (num == 1) {
return 1;
}
return num + sum(num - 1);
}
}
15.递归求N的阶乘
public class Test15 {
public static void main(String[] args) {
System.out.println(fac(5));
}
public static int fac(int num) {
if (num == 1) {
return 1;
}
return num * fac(num-1);
}
}
方法的使用练习题1.有一组数据,只有一个数字是出现一次,其他是两次,请找出这个数字。public static void main(String[] args) { int[] arr = {0, 1, 0, 1, 4}; System.out.println(findOnceNum(arr)); } public static int findOnceNum(int[] arr) { int a = 0; for (in