首页 百科知识 编写递归函数求n的阶乘

编写递归函数求n的阶乘

时间:2022-09-22 百科知识 版权反馈
【摘要】:如果一个函数在执行的过程中直接或间接地调用了自己,这种自我调用的方式称为函数的递归调用。准确地说,递归调用是一种特殊的嵌套调用,调用的是函数本身。间接递归是指某个函数通过调用其他函数间接地调用自身,如图5-7所示。求一个整数的阶乘,通常使用一个循环累计相乘来实现。上述程序是通过函数的递归调用来实现的。在例5.10中,函数递归终止条件就是n<=0。

5.3.2 函数的递归调用

如果一个函数在执行的过程中直接或间接地调用了自己,这种自我调用的方式称为函数的递归调用。准确地说,递归调用是一种特殊的嵌套调用,调用的是函数本身。

递归调用分为直接递归调用和间接递归调用两种情形。直接递归调用是指在执行某个函数的过程中,直接调用了该函数本身,如图5-6所示。间接递归是指某个函数通过调用其他函数间接地调用自身,如图5-7所示。

img262

图5-6

img263

图5-7

例5.10 求整数n!

程序如下:

img264

img265

程序运行结果如下:

i=4↙

4的阶乘等于24

求一个整数的阶乘,通常使用一个循环累计相乘来实现。上述程序是通过函数的递归调用来实现的。具体思路为:n的阶乘等于n乘以n-1的阶乘。以n=4为例,4的阶乘等于4乘以3的阶乘,也就是说要求出4的阶乘就必须先求出3的阶乘;3的阶乘等于3乘以2的阶乘,即要求出3的阶乘必须先求出2的阶乘……以此类推,直到求出1的阶乘,然后再反推回来,由1的阶乘推算出2的阶乘为2,由2的阶乘推算出3的阶乘为6,由3的阶乘推算出4的阶乘为24。

在使用递归调用时应注意两个问题:

①递归调用可以分为两个阶段:前推阶段和回代阶段,如图5-8所示。

②在前推的过程中一定有一个终止,也就是说程序不会一直无限制地调用下去,一定有一个结束递归的条件。在例5.10中,函数递归终止条件就是n<=0。当n<=0时,f=1,于是求出1的阶乘,然后开始了回代的过程。该程序的执行过程如图5-9所示。

img266

图5-8

img267

图5-9

例5.11 已知某数列K(n)的定义如下,求该数列的第六项K(6)。

img268

程序如下:

img269

程序运行结果如下:

img270

例5.12 一个简单的直接递归程序。

程序如下:

img271

程序运行结果如下:

img272

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈