C++程序 查找一个数的阶乘

C++程序 查找一个数的阶乘

非负整数的阶乘是小于或等于n的所有整数的乘积。例如,6的阶乘是65432*1,即720。

C++程序 查找一个数的阶乘

递归解法:

阶乘可以使用以下递归公式来计算。

n! = n * (n-1)!
n! = 1,如果n = 0或n = 1

下面是计算阶乘的实现。

// C++程序查找
//给定数字的阶乘
#include <iostream>
using namespace std;
 
//函数查找
//给定数字的阶乘
unsigned int factorial(unsigned int n)
{
    if (n == 0)
        return 1;
    return n * factorial(n - 1);
}
 
//驱动器代码
int main()
{
    int num = 5;
    cout << "5的阶乘是 " <<
             num << " 是 " <<
             factorial(num) << endl;
    return 0;
}
 
//该代码由Shivi_Aggarwal提供```  

输出:

5的阶乘是120

时间复杂度: O(n),其中n是字符串的长度。

辅助空间: O(n)

迭代解法:

由于递归可能对大数比较昂贵,因此阶乘也可以迭代计算。这里我们展示了使用for和while循环的迭代方法。

使用For循环

// C++程序用于计算
//数字的阶乘
#include <iostream>
using namespace std;
 
//函数查找
//给定数字的阶乘
unsigned int factorial(unsigned int n)
{
    int res = 1, i;
    for (i = 2; i <= n; i++)
        res *= i;
    return res;
}
 
//驱动器代码
int main()
{
    int num = 5;
    cout << "5的阶乘是 " <<
             num << " 是 " <<
             factorial(num) << endl;
    return 0;
}
 
//该代码由Shivi_Aggarwal提供```  

输出:

5的阶乘是120

时间复杂度: O(n)

辅助空间: O(1)

使用While循环

// C++程序用于计算
//数字的阶乘
#include <iostream>
using namespace std;
 
//函数查找
//使用while循环查找给定数字的阶乘
unsigned int factorial(unsigned int n)
{
    if(n == 0)
          return 1;
    int i = n, fact = 1;
    while (n / i != n)
    {
        fact = fact * i;
        i--;
    }
    return fact;
}
 
//驱动器代码
int main()
{
    int num = 5;
    cout << "5的阶乘是 " <<
             num << " 是 " <<
             factorial(num) << endl;
    return 0;
}
//该代码由Shivi_Aggarwal提供```  

输出:

5的阶乘是120

时间复杂度: O(n)

辅助空间: O(1)

单行解法(使用三元操作符):

// C++计算给定数的阶乘程序
#include <iostream>
using namespace std;
 
int factorial(int n)
{
    // 一行代码计算阶乘
    return ((n == 1 || n == 0) ? 1 :
             n * factorial(n - 1));
}
 
// 主函数
int main()
{
    int num = 5;
    cout << "Factorial of " <<
             num << " is "<<
             factorial(num);
    return 0;
}
 
// 本代码由shivanisinghss2110提供```  

输出:

Factorial of 5 is 120

时间复杂度 :O(n),用于递归。

空间复杂度 :O(n),用于递归调用堆栈。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例