算法之递归案例

in 网站建设
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

目录介绍

01.什么是递归

02.递归三个条件

03.斐波那契数列

04.找指定目录下所有文件

 *
 * @param files
 * @return
 */
public static List<File> listFiles(File files) {
    List<File> fileList = new ArrayList<>();
    if (files.isDirectory()) {
        for (File file : files.listFiles()) {
            fileList.addAll(listFiles(file));
        }
    } else {
        fileList.add(files);
    }
    return fileList;
}
```

05.求1+2+…+N和

 *
 * @param num
 * @return
 */
public static int getSum(int num) {
    if (num == 1) {
        return 1;
    }
    return num + getSum(num - 1);
}
```

06.求100的阶乘

07.有序数组合并

08.求一个数乘方

09.背包问题

     */
    public void knapsack(int total,int index){
        if(total < 0 || total > 0 && index >= weights.length){
            return;//没找到解决办法,直接返回
        }
        if(total == 0){//总重量为0,则找到解决办法了
            for(int i = 0 ; i < index ; i++){
                if(selects[i] == true){
                    System.out.println(weights[i]+" ");
                }
            }
            System.out.println();
            return;
        }
        selects[index] = true;
        knapsack(total-weights[index], index+1);
        selects[index] = false;
        knapsack(total, index+1);
    }
}
```

10.选择一支队伍

     */
    public void combination(int teamNumber,int index){
        if(teamNumber == 0){//当teamNumber=0时,找到一组
            for(int i = 0 ; i < selects.length ; i++){
                if(selects[i] == true){
                    System.out.print(persons[i]+" ");
                }
            }
            System.out.println();
            return;
        }
        //index超过组中人员总数,表示未找到
        if(index >= persons.length ){
            return;
        }
        selects[index] = true;
        combination(teamNumber-1, index+1);
        selects[index] = false;
        combination(teamNumber, index+1);
    }
}
```

11.汉诺塔问题

 */
public static void move(int dish,String from,String temp,String to){
    if(dish == 1){
        System.out.println("将盘子"+dish+"从塔座"+from+"移动到目标塔座"+to);
    }else{
        move(dish-1,from,to,temp);//A为初始塔座,B为目标塔座,C为中介塔座
        System.out.println("将盘子"+dish+"从塔座"+from+"移动到目标塔座"+to);
        move(dish-1,temp,from,to);//B为初始塔座,C为目标塔座,A为中介塔座
    }
}
```

12.二分法查找

 */
public static int search(int[] array, int start, int end, int searchValue){
    if (array != null && array.length > 0){
        int middle = (start + end) / 2;
        int middleValue = array[middle];
        if (searchValue == middleValue){
            return middle;
        }else if (searchValue < middleValue){
            //查询值小于中值,在中值前面再次搜索,缩小范围
            return search(array, start, middle-1, searchValue);
        }else {
            //查询值大于中值,在中值后面再次搜索,缩小范围
            return search(array, middle+1, end, searchValue);
        }
    }else {
        return -1;
    }
}
```

13.警惕重复计算

14.开源项目推荐

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看