c++ 求多个数的阶乘
时间: 2024-01-27 08:05:37 浏览: 29
以下是求多个数的阶乘的Python代码:
```python
def factorial(n):
if n <= 1:
return 1
else:
return n * factorial(n-1)
def multi_factorial(*nums):
result = []
for num in nums:
result.append(factorial(num))
return result
print(multi_factorial(5, 6, 7, 8)) # 输出 [120, 720, 5040, 40320]
```
首先定义一个递归函数 `factorial`,用来计算单个数的阶乘。
然后定义 `multi_factorial` 函数,使用可变参数 `*nums` 来接收多个数,遍历这些数并调用 `factorial` 函数计算阶乘,将结果存入列表中并返回。
最后调用 `multi_factorial` 函数,传入参数 5、6、7、8,输出结果为 `[120, 720, 5040, 40320]`,即这些数的阶乘。
相关问题
c++ 高精度函数阶乘
您可以使用C++的标准库中的`boost::multiprecision`来实现高精度函数阶乘。首先,确保您已经安装了Boost库。
以下是一个使用`boost::multiprecision`计算高精度阶乘的示例代码:
```cpp
#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
namespace mp = boost::multiprecision;
mp::cpp_int factorial(int n) {
mp::cpp_int result = 1;
for (int i = 1; i <= n; ++i) {
result *= i;
}
return result;
}
int main() {
int n = 100; // 要计算阶乘的数
mp::cpp_int result = factorial(n);
std::cout << "Factorial of " << n << " is: " << result << std::endl;
return 0;
}
```
在上面的示例中,我们使用`mp::cpp_int`类型来存储高精度整数。`factorial`函数接受一个整数参数`n`,并返回其阶乘。在`main`函数中,我们计算100的阶乘并输出结果。
请注意,由于高精度计算可能需要更多的时间和内存,因此计算较大数的阶乘可能会导致性能问题。
用C++来写一个多线程案例
当然可以!以下是一个使用C++编写的简单多线程案例,其中创建了两个线程来执行不同的任务:
```cpp
#include <iostream>
#include <thread>
// 任务1:计算阶乘
void calculateFactorial(int n) {
int factorial = 1;
for (int i = 1; i <= n; ++i) {
factorial *= i;
}
std::cout << "Factorial of " << n << " is: " << factorial << std::endl;
}
// 任务2:打印一组数字
void printNumbers(int start, int end) {
for (int i = start; i <= end; ++i) {
std::cout << i << " ";
}
std::cout << std::endl;
}
int main() {
// 创建线程并执行任务
std::thread t1(calculateFactorial, 5);
std::thread t2(printNumbers, 1, 10);
// 主线程等待两个子线程执行完毕
t1.join();
t2.join();
return 0;
}
```
在上面的示例中,`calculateFactorial`函数计算给定数字的阶乘,`printNumbers`函数用于打印一组数字。`main`函数中创建了两个线程`t1`和`t2`,并分别将任务1和任务2分配给它们执行。使用`std::thread`类来创建线程,并通过参数传递给函数所需的参数。最后,主线程使用`join`函数等待两个子线程完成执行。
编译并运行这个程序,你会看到如下输出:
```
Factorial of 5 is: 120
1 2 3 4 5 6 7 8 9 10
```
这个例子演示了如何使用C++创建多线程,并同时执行不同的任务。当然,你可以根据自己的需求进行修改和扩展。