• 递归方法和回溯方法模板


    递归和回溯的应用场景

    • 二叉树的遍历
    • 归并排序、快速排序
    • 动态规划
    • 二分搜索

    复杂度计算

    复杂度计算方法,需要等差数列、等比数列的知识。

    递归

    function fn(n){
    	//第一步:完整性检查,判断输入或者状态是否非法?
    	if(input/state is invalid){
    		return;
    	}
    	
    	//第二步:判断递归是否应当结束?
    	if(match condition){
    		return some value;
    	}
    	
    	//第三步:缩小问题规模,递归调用
    	result1 = fn(n1);
    	result2 = fn(n2);
    		
    	//第四步:整合结果
    	return combine(result1,result2);
    }
    

    回溯

    1、首先判断当前情况是否非法,如果非法就立即返回
    2、看看当前情况是否已经满足条件?如果是,就将当前结果保存起来并返回
    3、在当前情况下,遍历所有可能出现的情况,并进行递归
    4、递归完毕后,立即回溯,回溯的方法就是取消前一步进行的尝试

    function fn(n){
    	//第一步:完整性检查,判断输入或者状态是否非法?
    	if(input/state is invalid){
    		return;
    	}
    	
    	//第二步:判断递归是否应当结束?
    	if(match condition){
    		return some value;
    	}
    	
    	for(all possible cases){//遍历所有可能出现的情况
    		//第三步:尝试下一步的可能性
    		solution.push(case);
    		result = fn(m);//递归
    		//第四步:回溯到上一步
    		solution.pop(case);
    	}
    }
    
  • 相关阅读:
    微服务架构的设计原则
    分布式锁
    银行卡Bin和Logo
    Docker部署Jenkins
    云服务器配置 docker java mysql mongodb redis nginx jenkins 环境
    Mybatis使用心德
    CTO 技能图谱
    React 面试问题
    Dart语法学习
    第一篇博客
  • 原文地址:https://www.cnblogs.com/dindin1995/p/13059100.html
Copyright © 2020-2023  润新知