使用stringBuffer.reverse()方法反转输出字符串;递归完成字符串反转 ;递归进行冒泡排序
递归分两步, 递和归 ,先递后归,递就是从n到0,归就是0到n
并且,递和归之间要分界线,也就是可以触发归的条件,不然会陷入死循环.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String abc = "abcds";
StringBuffer stringBuffer = new StringBuffer(abc);
System.out.println(stringBuffer.reverse());
reverse(0, abc);
int[] arr = {4,2,6,8,3};
bubble(arr, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
//j表示未排序区间的右边界
public static void bubble(int[] arr, int j){
//结束条件j左边无元素
if (j == 0){
return;
}
//此时的x表示有序和无序的分界线 x的右边为有序 x的左边为无序
int x = 0;
for (int i = 0; i < j; i++) {
//大的往上走
if (arr[i] > arr[i + 1]){
int t = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = t;
//只要发生了交换x就往前移动
//而x后面没发生交换的一定是有序的
x = i;
}
}
bubble(arr, j - 1);
// //结束条件j左边无元素
// if (j == 0){
// return;
// }
// for (int i = 0; i < j; i++) {
// //大的往上走
// if (arr[i] > arr[i + 1]){
// int t = arr[i];
// arr[i] = arr[i + 1];
// arr[i + 1] = t;
// }
// }
// bubble(arr, j - 1);
}
public static void reverse(int n, String str) {
if (n == str.length()) {
return;
}
reverse(n+1,str);
System.out.println(str.charAt(n));
}
}