C++递归实现n!详解及程序示例

需积分: 9 1 下载量 33 浏览量 更新于2024-07-14 收藏 8.62MB PPT 举报
"这篇资料是关于使用C++编程语言通过递归方法计算阶乘的教程,出自《谭浩强讲义》,涉及C++基础、函数、递归等概念。" 在C++编程中,递归是一种解决问题的方法,它通过调用自身来实现。在这个例子中,我们看到一个名为`fac`的函数,用于计算一个整数`n`的阶乘。阶乘是指所有小于等于`n`且大于等于1的正整数的乘积,表示为`n!`。递归函数的基本思想是将复杂问题分解为更简单的基本情况。 `fac`函数定义如下: ```cpp float fac(int n) { float y; if ((n == 0) || (n == 1)) y = 1; else y = n * fac(n - 1); return y; } ``` 在这个函数中,如果`n`等于0或1,函数直接返回1,因为0和1的阶乘都是1。对于其他`n`值,函数会递归调用自身,计算`n-1`的阶乘,然后将结果乘以`n`得到`n`的阶乘。 在主函数`main`中,用户被要求输入一个整数`n`,程序将打印出`n`的阶乘: ```cpp void main(void) { float y; int n; cout << "Input n:\n"; cin >> n; cout << n << "!=" << fac(n) << endl; } ``` 在示例中,当`n`等于5时,`fac(5)`的计算过程如下: - `fac(5)`调用`fac(4)` - `fac(4)`调用`fac(3)` - `fac(3)`调用`fac(2)` - `fac(2)`调用`fac(1)` - `fac(1)`返回1,结束递归 每个递归调用都将返回值乘以当前的`n`,最终得到5的阶乘,即120。 这段代码展示了C++中的递归和流程控制,同时提到了C++的发展历史和特点。C++是C语言的扩展,具有面向对象的特性,并且继承了C语言的高效性和可移植性。递归是C++中一个强大的工具,常用于解决分治法和树形结构的问题,但在使用时需要注意防止无限递归和提高效率。在实际编程中,理解递归原理及其应用场景对于学习和掌握C++至关重要。