Faktorial#1658

Faktorial (Həll təhlili)

Bir ədədin faktoriyalı -dən -ə qədər olan ədədlərin hasilinə bərabərdir:

n! = 1 * 2 * … * (n - 1) * n

Yadda saxlamaq lazımdır ki, sıfırın faktoriyalı birdir:

0! = 1

Məsələn:

1! = 1; \\ 2! = 1 * 2 = 2; \\ 3! = 1 * 2 * 3 = 6; \\ 4! = 1 * 2 * 3 * 4 = 24;

Müşahidə edək ki, məsələn:

5! = (1 * 2 * 3 * 4) * 5 = 4! * 5; \\ 100! = (1 * 2 * … * 99) * 100 = 99! * 100; \\ n! = 1 * 2 * … * (n - 1) * n = (n - 1)! * n;

Faktoriyalı ya dövr vasitəsilə, ya da rekursiya vasitəsilə hesablamaq olar. İkinci halda rekursiya ilə verilən formuldan istifadə etməliyik:

fact(n) = \begin{cases} fact(n - 1) \cdot n, n > 0 \\ 1, n = 0 \end{cases}

Algoritmin realizasiyası

Giriş dəyəri -i oxuyuruq.

scanf("%lld",&n);

Faktoriyal res = n! = 1 \cdot 2 \cdot 3 \cdot ... \cdot n hesablayırıq.

res = 1;
for(i = 1; i <= n; i++)
  res = res * i;

Nəticəni çıxışa veririk.

printf("%lld\n",res);

Algoritmin realizasiyası — rekursiya

fact funksiyası ədədinin faktoriyalını hesablayır.

long long fact(long long n)
{
  if (n == 0) return 1;
  return fact(n - 1) * n;
}

Proqramın əsas hissəsi. Giriş dəyəri -i oxuyuruq.

scanf("%lld",&n);

Nəticəni hesablayırıq və çıxışa veririk.

res = fact(n);
printf("%lld\n",res);

Java realizasiyası — rekursiya

import java.util.*;

public class Main
{
  static long fact(int n)
  {
    if (n == 0) return 1;
    return fact(n - 1) * n;
  }
    
  public static void main(String[] args)
  {
    Scanner con = new Scanner(System.in);
    int n = con.nextInt();

    long res = fact(n);

    System.out.println(res);
    con.close();
  }
}

Python realizasiyası — dövr

Giriş dəyəri -i oxuyuruq.

n = int(input())

Faktoriyal res = n! = 1 \cdot 2 \cdot 3 \cdot ... \cdot n hesablayırıq.

res = 1
for i in range(1,n+1):
  res *= i

Nəticəni çıxışa veririk.

print(res)

Python realizasiyası — rekursiya

fact funksiyası ədədinin faktoriyalını hesablayır.

def fact(n):
  if n == 0: return 1
  return n * fact(n - 1)

Proqramın əsas hissəsi. Giriş dəyəri -i oxuyuruq.

n = int(input())

Nəticəni hesablayırıq və çıxışa veririk.

print(fact(n))