首页 > 编程知识 正文

5的阶乘除以3的阶乘,5的阶乘等于多少

时间:2023-05-03 21:11:09 阅读:276426 作者:2667

现在进入递归的学习了,递归非常重要,使用的非常多。

1、递归的基本概念

一个函数调用其自身,就是递归。下面通过一个简单的例子来说明递归的过程。

例子:求n!的递归函数

n阶乘可以分解为n乘以n-1的阶乘问题,将问题分解为规模更小的子问题进行求解,用递归实现如下:

int Factorial(int n){if (n == 0)return 1;return n * Factorial(n - 1);}

下面来说明一下递归的调用顺序,在此之前先说明一下符号的含义
F(n)m:F表示Factorial函数,n表示参数为n,m表示程序执行到第m行

假设计算Factorial(3),递归调用过程如下:
F(3)3 -> F(3)5 -> F(2)3 -> F(2)5 -> F(1)3 -> F(1)5 -> F(0)3 -> F(0)4:
进入参数为3的函数计算,参数为3时执行第三行,第五行;进入参数为2的函数计算,执行参数为2的第三行,第五行;进入参数为1的计算,执行参数为1的第三行,第五行;进入参数为1的计算,执行参数为1的第三行,第四行。

返回过程:
返回1 -> F(1)5:返回1*1 -> F(2)5:返回2*1 -> F(3)5:返回3*2 -> 函数执行结束
返回1,执行参数为1的第五行,返回

2、递归的实现

递归和普通函数调用一样是通过栈实现的。

在调用函数时,保存函数的参数,保存函数的返回地址,然后跳转执行调用函数。返回时,根据保存的返回地址,返回到指定位置。

计算Factorial(4)的执行过程,递归的实现如下:

上面讲解了递归的基本概念,递归的实现。下面来说明一下递归的作用:

替代多重循环解决本来就是用递归形式定义的问题将问题分解为规模更小的子问题进行求解 3、总结 一个函数调用其自身递归是通过栈实现的,理解递归调用过程

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。