C++ 程序 使用递归查找大数的阶乘
给定一个大数 N ,任务是使用递归查找 N 的阶乘。
非负整数的阶乘是所有小于或等于n的整数的乘积。例如6的阶乘为65432*1,即720。
例子:
输入: N = 100
输出: 933262154439441526816992388562667004-907159682643816214685929638952175999-932299156089414639761565182862536979-208272237582511852109168640000000000-00000000000000
输入: N = 50
输出: 3041409320171337804361260816606476884-4377641568960512000000000000
迭代方法: 迭代方法在本文第一部分进行了讨论。这里,我们讨论递归方法。
递归方法: 为了递归地解决这个问题,算法在调用相同的函数递归地乘以数字n的结果时改变了方式。 请按照以下步骤解决该问题:
- 如果 n 小于等于 2 ,则将 n 乘以 1 并将结果存储在向量中。
- 否则, 调用函数 multiply(n, factorialRecursiveAlgorithm(n – 1)) 查找答案。
下面是以上方法的实现。
输出
时间复杂度: O(n)
辅助空间: O(K),其中K是 输出 中包含的最大数字数量。