‘壹’ java 递归
花了将近一天时间才实现任意长度的字符串所有可能的排列,下面分享一下成果
里面最重要的思想是:假定已经将n-1个字符组成的字符所有可能的排列算好了,将它们放到List中存放着。在依次取出每个元素,那么将新增的字符插入这个元素的n个位置上,那么每个元素就会产生新的n个字符的排列了。
所以:总共产生的排列个数=List中已有元素个数 乘以 n
优化前代码如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
*
* @author chenhui
*
*/
public class TestArrayABC {
/**
* @param str 字符串str中每个字符都不相同
* @return 字符串str所有可能的排列
*/
public List<String> doCompute(String str)
{
List<String> list = new ArrayList<String>();
List<String> temp = new ArrayList<String>();
temp.addAll(list);
list.removeAll(null);
if(str.length() == 1)
{
list.add(str);
return list;
}
else
{
char ch = str.charAt(0);
temp = doCompute(str.substring(1));
for(int j = 0; j < temp.size(); j++)
{
String s = temp.get(j);
char[] charArray = s.toCharArray();
char[] tempArray = new char[s.length() + 1];
//将ch分别放到charArray.length + 1个位置
for(int k = 0; k < charArray.length + 1; k++)
{
for(int i = 0; i < charArray.length + 1; i++)
{
if(i < k)
{
tempArray[i] = charArray[i];
}
else if(i == k)
{
tempArray[i] = ch;
}
else
{
tempArray[i] = charArray[i - 1];
}
}
list.add(j, new String(tempArray));
}
}
return list;
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestArrayABC abc = new TestArrayABC();
List<String> list = abc.doCompute(
‘贰’ 怎样用java实现递归求一个数组的最大值
其实思想很简单遍历数组如果第一个数比第二个数小那么交换他们的位置并再次调用自身方法
如果第一个数比下一个大那么方法继续执行
publicclassTest{
publicstaticvoidmain(String[]args){
int[]data={15,56,89,74,52,1,25,36,100};
show(data);
System.out.println(data[0]);
}
publicstaticvoidshow(int[]a){
for(inti=0;i<a.length-1;i++){
if(a[i]<a[i+1]){
inttemp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
show(a);
}
}
}
}
‘叁’ 用Java实现:使用递归输出数组元素
publicclassTest
{
publicstaticvoidoutArrayData(int[]array,inti)
{
System.out.print(array[i]+"");
if(i>=array.length-1)
{
return;
}
else
{
i++;
outArrayData(array,i);
}
}
publicstaticvoidmain(String[]args)
{
intarray[]=newint[]{25,56,36,55,96,87,97,74};
outArrayData(array,0);
}
}
顺便说一句:
楼上这种渣笔程序员,连个递归都不会写,还是网络知道行家,真是一群猪一样的管理员。
‘肆’ 怎么用Java递归输出数组
List<use> a;
for(use c:a){
system.out.print(c)
};
a是数组,a里面每个元素的类型是use,所以输出每一个数组元素时这是比较简单的递归输出
‘伍’ 递归将一个整数存放到一个数组中 用java怎么实现
意思是说,把一个整数拆分了。把他每个数字存入数组么?
‘陆’ Java数组问题。从键盘输入一组数据,然后请你用递归的方法求出数组元素中的所有元素的和
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);//输入你想要计算的数字
//使用for循环依次往数组里添加
int a[]=new int[10];
for(int i=0;i<a.length;i++)
{
System.out.println("请输入一个整数");
a[i]=sc.nextInt();
System.out.println(a[i]);
}
System.out.println(a);
int sum=0;
for(int i=0;i<a.length;i++)
{
sum+=a[i];
}
}
System.out.println(sum);
}
‘柒’ 递归 java语言 输出数组的元素
进入printArray(int i)这个方法后,会执行printArray(i - 1);这条语句,一直等待其返回。当i == 0时,此方法返回void, 继续执行下面的语句System.out.println("[" + (i - 1) + "] " + values[i - 1]);
最后会输出values[0],即数组的第一个数。
java中的函数一般都是同步输入输出流的,即调用一个函数,程序必须等待其返回,才会继续执行下一条语句。
‘捌’ 怎么用Java递归输出数组
完全不需要用到递归实现。这个用递归实现就是牛刀杀鸡,效率还低。
‘玖’ Java给定数组,用递归方法判定是否有序
public class Main {
public static void main(String[] args) {
int []A={1,2,3};
System.out.println(isArrayInSortedOrder(A,A.length));
}
//1.给定一个数组,用递归方法判定数组元素是否有序
static int isArrayInSortedOrder(int[] A, int index){
if (A.length==1) return 1;
return (A[index-1]<=A[index-2])?0:isArrayInSortedOrder(A,index-1);
}
}