您的位置:首页 > 职场人生

常见的几道关于递归的JAVA面试题

2015-06-22 23:05 603 查看
</pre><pre name="code" class="java">1、把一个数组里的数组全部列出,比如1和2列出来为1,2,12,21.
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

/**
* 把一个数组里的数组合全部列出,比如1和2列出来为1,2,12,21;
* @author Administrator
*
*/
public class Test01 {

/**
* 列出LinkedList集合中所有的组合
* 去掉注释后显示取出所有的数字后的组合
*/
static int n = 0;
public static void listAll(List<Integer> list,String prefix){
if(prefix!=""){
//if(list.isEmpty()){
System.out.print(prefix+" ");
//}
n++;
}
//每输出4个换一行
if(n%4==0 && n!=0){
System.out.println();
}
for(int i=0;i<list.size();i++){
List<Integer> tmp = new LinkedList<Integer>(list);
listAll(tmp,prefix+(tmp.remove(i)+""));
}
}
public static void main(String[] args) {
Integer[] arr = {1,2,3,4,5};
List<Integer> list = Arrays.asList(arr);
List<Integer> temp = new LinkedList<Integer>(list);
listAll(temp,"");
}
}

2、试用递归的方法编程计算斐波那契数列的通项f(n)

/**
* 试用递归的方法编程计算斐波那契数列的通项f(n)。
* @author Administrator
*
*/
public class Test02 {
public static long f(long n){
if(n==0||n==1){
return n;
}
return f(n-1)+f(n-2);
}
public static void main(String[] args) {
long t1=System.currentTimeMillis();
System.out.println(f(43));
long t2=System.currentTimeMillis();
System.out.println(t2-t1);
}
}
3、利用1、2、2、3、4这5个数字,用Java写一个main函数,打印出所有不同的排列,如12234、21234等,要求打印出来的不能有重复。

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

/**
* 利用1、2、2、3、4
* @author Administrator
*
*/
public class Test04 {
public static void listAll(List<String> list,String prefix){
if(list.isEmpty()){
System.out.println(prefix);
}

boolean[] flag = {true,true};
for(int i=0;i<list.size();i++){
List<String> temp = new LinkedList<String>(list);
String suffix = temp.remove(i);
if(suffix=="2"){
if(flag[0]){
flag[0] = false;
}else{
//第二次取到2将flag[1]置为false
flag[1] = false;
}
}
if(suffix!="2" || flag[1]){
listAll(temp,prefix+suffix);

}
}
}
public static void main(String[] args) {
String[] arr = {"1","2","2","3","4"};
listAll(Arrays.asList(arr),"");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: