递归算法的三个分解步骤 |
您所在的位置:网站首页 › 递归分为哪两个阶段 › 递归算法的三个分解步骤 |
递归是一个重要的算法,希望你也能学得会。 递归的三大步骤 编写递归函数的步骤,可以分解为三个。 递归第一个步骤:明确函数要做什么 对于递归,一个最重要的事情就是要明确这个函数的功能。这个函数要完成一样什么样的事情,是完全由程序员来定义的,当写一个递归函数的时候,先不要管函数里面的代码是什么,而要先明确这个函数是实现什么功能的。 比如,我定义了一个函数,这个函数是用来计算n的阶乘的。 // 计算n的阶乘(假设n不为0) int f(int n) { // 先不管内部实现逻辑 }这样,就完成了第一个步骤:明确递归函数的功能。 递归第二个步骤:明确递归的结束(退出递归)条件 所谓递归,就是会在函数的内部逻辑代码中,调用这个函数本身。因此必须在函数内部明确递归的结束(退出)递归条件,否则函数会一直调用自己形成死循环。意思就是说,需要有一个条件(标识符参数)去引导递归结束,直接将结果返回。要注意的是,这个标识符参数需要是可以预见的,对于函数的执行返回结果也是可以预见的。 比如在上面的计算n的阶乘的函数中,当n=1的时候,肯定能知道f(n)对应的结果是1,因为1的阶乘就是1,那么我们就可以接着完善函数内部的逻辑代码,即将第二元素(递归结束条件)加进代码里面。 // 计算n的阶乘(假设n不为0) int f(int n) { if (n == 1) { return 1; } }当然了,当n=2的时候,也可以知道n的阶乘是2,那么也可以把n=2作为递归的结束条件。 // 计算n的阶乘(假设n>=2) int f(int n) { if (n == 2) { return 2; } }这里就可以看出,递归的结束条件并不局限,只要递归能正常结束,任何结束条件都是允许的,但是要注意一些逻辑上的细节。比如说上面的n==2的条件就需要n>2,否则当n=1的时候就会被漏掉,可能导致递归不能正常结束。完善一下就是当n |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |