用递归的方法打印n的阶乘,并计算程序运行时间,并100的阶乘用C++实现
时间: 2024-09-13 10:17:20 浏览: 45
用递归方法求n!-C++程序设计
递归是一种常见的编程技术,它允许函数调用自身来解决问题。打印n的阶乘(记作n!)可以通过递归方法实现,具体思路是:n的阶乘等于n乘以(n-1)的阶乘。当递归到基本情况,即n等于0或1时,返回1。
下面是一个使用递归实现打印n阶乘的C++代码示例:
```cpp
#include <iostream>
#include <chrono>
// 递归函数计算阶乘
unsigned long long factorial(unsigned int n) {
if (n == 0 || n == 1) {
return 1; // 基本情况
} else {
return n * factorial(n - 1); // 递归调用
}
}
int main() {
unsigned int n = 100; // 计算100的阶乘
auto start = std::chrono::high_resolution_clock::now(); // 开始计时
unsigned long long result = factorial(n);
auto end = std::chrono::high_resolution_clock::now(); // 结束计时
std::chrono::duration<double> diff = end - start;
std::cout << "100的阶乘是: " << result << std::endl; // 打印结果
std::cout << "程序运行时间: " << diff.count() << "秒" << std::endl; // 打印运行时间
return 0;
}
```
在这个代码中,我们使用了C++的`<chrono>`库来计算程序的运行时间。首先记录开始时间,然后执行阶乘计算,最后记录结束时间,并计算两个时间点之间的差值,这个差值就是程序运行的时间。
需要注意的是,使用递归计算较大数的阶乘可能会导致栈溢出错误,因为每次函数调用都会消耗一定的栈空间。此外,对于非常大的数(比如1000的阶乘),结果会超出任何标准数据类型的范围,此时可能需要使用特殊的大数库或者数组来存储结果。
阅读全文