『壹』 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);
}
}