递归算法详解 | 您所在的位置:网站首页 › python递归和循环的区别 › 递归算法详解 |
目录
1递归的三要素1.1明确函数的功能1.2递归的结束条件1.3函数的等价关系
2递归案例
递归算法(英语:recursion algorithm)是指一种通过重复将问题分解为同类的子问题而解决问题的方法。
1递归的三要素
递归的三要素 明确函数的功能递归的结束条件函数的等价关系接下来利用 n n n阶乘来讲解这三个条件 任何大于等于1 的自然数 n n n阶乘表示方法: n ! = n × ( n − 1 ) ! ( n > 1 ) 0 ! = 1 ( n = 0 ) n!=n \times(n-1)! \quad (n > 1) \\ 0! = 1 \quad (n = 0) n!=n×(n−1)!(n>1)0!=1(n=0) 1.1明确函数的功能明确我们要写的函数的功能是实现 n n n的阶乘,定义函数如下: // 定义n阶乘函数 public int factorial(int n){ } 1.2递归的结束条件由阶乘的表示方法可以看出当 n = 0 n = 0 n=0时是阶乘的最小值,此时结束继续往下计算阶乘,可以把 n = 0 n = 0 n=0当做递归的结束条件。同样,当 n = 1 n = 1 n=1时, 1 ! = 1 1! = 1 1!=1也可以作为递归的结束条件。 // 定义n阶乘函数 public Integer factorial(int n){ // 递归的结束条件 if (n == 1) return 1; } 1.3函数的等价关系第三要素就是,我们要不断缩小参数的范围,缩小之后,我们可以通过一些辅助的变量或者操作,使原函数的结果不变。 由阶乘的表达式可以看出 n n n的阶乘与 n − 1 n -1 n−1阶乘存在的关系式为 n ! = n × ( n − 1 ) ! ( n > 1 ) n!=n \times(n-1)! \quad (n > 1) n!=n×(n−1)!(n>1)若已知 n − 1 n -1 n−1的阶乘,记为 f ( n − 1 ) f(n - 1) f(n−1),则当前的 n n n的阶乘可以记为 f ( n ) = n × f ( n − 1 ) ( n > 1 ) f(n) = n \times f(n -1)\quad (n > 1) f(n)=n×f(n−1)(n>1) 综上递归的三个要素可以得出求 n n n阶乘的递归函数为 // 定义n阶乘函数 public Integer factorial(int n){ // 递归的结束条件 if (n == 1) return 1; return n * factorial(n - 1); } 2递归案例更多的递归案例讲解点击此处. |
CopyRight 2018-2019 实验室设备网 版权所有 |