zoukankan      html  css  js  c++  java
  • 递归 理论(肌肉记忆)

    递归 理论(肌肉记忆)

    递归 循环
    通过函数体来进行的循环

    从前有座山
    山里有个庙
    庙里有个和尚讲故事
    返回 71

    就像盗梦空间

    • 向下进入到不同的梦境中,然后又向上回到原来的一层
    • 通过声音同步回到上一层
    • 每一层的环境和周围的人都是一份拷贝,主角等几个人穿越不同层级的梦境(发生和携带变化)
      递归就像剥洋葱,内部就是栈的形式

    递归是有一个代码模板的
    pyrhon形式

    def recursion(level, param1, param2, ...):
    	# recursion terminator
    	if level > MAX_LEVEL:
    	process_result
    	return
    
    	# process logic in current level
    	process(level, data...)
    	
    	# drill down
    	self.recursion(level+1, p1, p2, ...)
    	
    	# reverse the current level status if needed
    

    javascript形式

    function recursion(level, param1, param2, ...) {
    	// 递归终结条件(一开始就来写递归)
    	if(level > MAX_LEVEL) {
    		// 处理递归结果
    		process_result;
    		// 返回最终值
    		return;
    	}
    
    	// 处理当前层的逻辑
    	process(level, data);
    	
    	// 下探到下一层,调用自身进行递归
    	recursion(level + 1, p1, p2, ...)
    	// 有时候这一层有一些东西需要清理,但是有时候又不用
    }
    

    java

    public void recur(int level, int param) {
    	// terminator
    	if(level > MAX_LEVEL) {
    		// process result
    		// return;
    	}
    	// process current logic
    	process(level, param);
    	// drill down
    	recur(level: level + 1, new Param);
    	// restore current status
    }
    

    思维要点

    1. 不要人肉进行递归(最大误区,不要去画递归的状态树,直接看函数本身开始写即可,一定要熟练使用递归)
    2. 找到最近最简的方法,然后将其拆解成可以重复解决的问题(重复的子问题)
      if for while else loop 然后就是 recursion
    3. 数学归纳法思维(最开始 n=1 n=2 的时候成立 证明 n 成立的时候,n + 1 也成立)
  • 相关阅读:
    webpack 命令行 传入自定义变量
    PHP 装饰器模式
    php图片合成【png图片】
    Sublime Text 3.1 3170 / 3176 注册码(附降级与禁止更新方法)
    菜鸟教程jsonp基础知识讲解
    CentOS7用yum安装软件提示 cannot find a valid baseurl for repobase7x86_64
    PHP的parse_ini_file()函数,解释结构类型php.ini格式的文件
    scp命令详解
    php常用错误码的意思
    php模式设计之 适配器模式
  • 原文地址:https://www.cnblogs.com/ssaylo/p/13465973.html
Copyright © 2011-2022 走看看