博客
关于我
递归的精髓是什么?
阅读量:435 次
发布时间:2019-03-06

本文共 848 字,大约阅读时间需要 2 分钟。

有段话来理解递归,感觉不错:

你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开它。若干次之后,你打开面前的门后,发现只有一间屋子,没有门了。然后,你开始原路返回,每走回一间屋子,你数一次,走到入口的时候,你可以回答出你到底用这你把钥匙打开了几扇门。

递归的精髓:

递归就是有去(递去)有回(归来),如下图所示。“有去”是指:递归问题必须可以分解为若干个规模较小,与原问题形式相同的子问题,这些子问题可以用相同的解题思路来解决,就像上面例子中的钥匙可以打开后面所有门上的锁一样;“有回”是指 : 这些问题的演化过程是一个从大到小,由近及远的过程,并且会有一个明确的终点(临界点),一旦到达了这个临界点,就不用再往更小、更远的地方走下去。最后,从这个临界点开始,原路返回到原点,原问题解决。 

递归的三要素:

1、明确递归终止条件;2、给出递归终止时的处理办法;3、提取重复的逻辑,缩小问题规模。 上代码:
static void Main(string[] args)        {                     int n= Digui1(3);            Console.WriteLine(n);            Console.ReadLine();                }        private static int Digui1(int j)        {            if (j == 0)                return 0;            int i = Digui1(j - 1);//第一次:j=2;  j=1;j=0;递进去的值            int n= i + j;//j=1,i=0;j=2,i=1;j=3,i=3;归来的值            return n;//n=1;n=3;        }

 

 

转载地址:http://slqyz.baihongyu.com/

你可能感兴趣的文章
第4章 字符串、数组和特殊矩阵
查看>>
第6章 树型结构
查看>>
0608-nn和autograd的区别
查看>>
MYSQL 数据库结构优化
查看>>
leetcode 一些算法题及答案
查看>>
spring 整合 ActiveMQ
查看>>
PHP 取前一天或后一天、一个月时间
查看>>
Kafka 分布式的,基于发布/订阅的消息系统
查看>>
Spring Bean的加载
查看>>
Web笔记(一) Web 简介与开发环境搭建
查看>>
Java基础回顾-缓冲流
查看>>
JSONPath小试牛刀之Snack3
查看>>
更强的 JsonPath 兼容性及性能测试
查看>>
Weed3 for java 新的微型ORM框架
查看>>
利用 Solon-web 框架写一个 Hello World
查看>>
Solon Ioc 的注解对比Spring及JSR330
查看>>
Solon 1.2.12 发布,新的惊喜
查看>>
Solon rpc 之 SocketD 协议 - 消息订阅模式
查看>>
Python实现简单的梯度下降法
查看>>
Java基础:HashMap中putAll方法的疑惑
查看>>