递归的精髓是什么?

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

递归的精髓:

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

递归的三要素:

1.明确递归终止条件;
2.给出递归终止时的处理办法;
3.提取重复的逻辑,缩小问题规模。

上代码:
        {          
           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;
        }
相关文章
|
6月前
|
算法 JavaScript 前端开发
递归的递归之书:第五章到第九章
递归的递归之书:第五章到第九章
154 0
|
5月前
|
机器学习/深度学习 C语言
|
5月前
|
机器学习/深度学习 算法 C语言
详细介绍递归算法在 C 语言中的应用,包括递归的基本概念、特点、实现方法以及实际应用案例
【6月更文挑战第15天】递归算法在C语言中是强大力量的体现,通过函数调用自身解决复杂问题。递归涉及基本概念如自调用、终止条件及栈空间管理。在C中实现递归需定义递归函数,分解问题并设定停止条件。阶乘和斐波那契数列是经典应用示例,展示了递归的优雅与效率。然而,递归可能导致栈溢出,需注意优化。学习递归深化了对“分而治之”策略的理解。**
108 7
|
5月前
|
C语言
C语言学习记录——用递归思想求第n个斐波那契数,函数递归
C语言学习记录——用递归思想求第n个斐波那契数,函数递归
27 0
|
6月前
|
存储 算法 C语言
C递归程序设计
C递归程序设计
38 3
|
6月前
|
算法 API Python
递归函数:原理与实践
递归函数:原理与实践
|
6月前
|
机器学习/深度学习 算法
加深理解函数递归
加深理解函数递归
|
6月前
|
存储 缓存 算法
程序设计中的递归思想与实践
程序设计中的递归思想与实践
44 0
|
算法 Windows
C 递归 详解(通俗易懂)
C 数据结构与算法入门——递归 内容分享。
81 0
|
存储 算法
递归算法设计技术
实验目的 实验内容 实验过程 程序清单 复杂度分析 运行结果
130 0