Scala程序 寻找一个数字的阶乘

Scala程序 寻找一个数字的阶乘

给定一个数字 N ,任务是计算 N 的阶乘 在数学中,一个正整数 N 的阶乘是所有小于或等于N的正整数的乘积。

N! = N * ( N -1 )! 
N! = 1 if N = 1 or N = 0
Scala

Scala程序寻找一个数字的阶乘
Input : N = 3
Output : 6

Input : N = 5
Output : 120

建议:请先在={IDE}上尝试你的方法,然后再继续解决

方法一:迭代法 在这个方法中,我们将使用一个循环来迭代数字序列,以获得阶乘。

以下是上述方法的实现

// Scala Program to calculate
// Factorial of a number
 
// Creating object
object GFG
{
    // Iterative way to calculate
    // factorial
    def factorial(n: Int): Int = {
         
        var f = 1
        for(i <- 1 to n)
        {
            f = f * i;
        }
         
        return f
    }
 
    // Driver Code
    def main(args: Array[String])
    {
        println(factorial(5))
    }
 
}
Scala

输出:

120
Scala

时间复杂度。 O(n ),因为for循环迭代了n次。
辅助空间。 O(1) ,因为使用的唯一变量是一个单一的整数(f),无论输入的大小如何,都保持不变。

方法2:使用递归 在这种方法中,递归公式 N!=N*(N-1)!被用来计算给定数字的阶乘。下面是上述方法的实现。

// Scala Program to calculate Factorial
// of a number using recursion
 
// Creating object
object GFG
{
    // Function to calculate
    // factorial using Recursive
    // formula (i.e N! = N * N-1 !)
    def factorial(n: Int): Int =
    {
        if (n == 0)
            return 1
        else
            return n * factorial(n-1)
    }
 
    // Driver Code
    def main(args: Array[String])
    {
        println(factorial(5))
    }
}
Scala

输出:

120
Scala

时间复杂度。 O(n) ,其中n是递归调用的次数。这是因为阶乘()函数递归调用自己n次来计算一个给定数字的阶乘。因此,时间复杂度与输入大小成线性关系。

辅助空间: O(n), 其中n是递归调用的次数。这是因为在每次递归调用中,都会创建一个新的堆栈框架来存储局部变量和返回地址。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册