Alqoritm Təhlili
Bir ədədin faktorialı 1-dən n-ə qədər olan ədədlərin hasilidir:
n! = 1 * 2 * … * (n – 1) * n
Yadda saxlamaq vacibdir ki, sıfırın faktorialı birə bərabərdir:
0! = 1
Məsələn:
1! = 1;
2! = 1 * 2 = 2;
3! = 1 * 2 * 3 = 6;
4! = 1 * 2 * 3 * 4 = 24;
Məsələn, diqqət edin
5! = (1 * 2 * 3 * 4) * 5 = 4! * 5;
100! = (1 * 2 * … * 99) * 100 = 99! * 100;
n! = 1 * 2 * … * (n – 1) * n = (n – 1)! * n;
Bir ədədin faktorialı ya dövr istifadə edərək, ya da rekursiya vasitəsilə hesablanıla bilər. İkinci halda, təkrarlanma formulundan istifadə etmək lazımdır:
Alqoritmin İmplementasiyası
Giriş dəyəri n-i oxuyun.
scanf("%lld",&n);
Ədədin faktorialını hesablayın res = n! = 1 * 2 * 3 * … * n.
res = 1; for(i = 1; i <= n; i++) res = res * i;
Cavabı çap edin.
printf("%lld\n",res);
Alqoritmin İmplementasiyası – Rekursiya
fact funksiyası n ədədin faktorialı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 n-i oxuyun.
scanf("%lld",&n);
Cavabı hesablayın və çap edin.
res = fact(n); printf("%lld\n",res);
Java İmplementasiyası – 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 İmplementasiyası – Dövr
n = int(input()) res = 1 for i in range(1,n+1): res *= i print(res)
Python İmplementasiyası – Rekursiya
def fact(n): if n == 0: return 1 return n * fact(n-1) n = int(input()) print(fact(n))