Факториелът на число е важно математическо понятие. Можете да го използвате, за да извършвате пермутации и комбинации, да пишете експоненциални и логаритмични изрази и да изчислявате вероятността.
Можете да го използвате, за да намерите броя на различните начини, по които можете да проектирате подреждане на местата за сядане или да изберете тениски за вашата ваканция на Малдивите. Но как можете да изчислите факториела на число?
Какво е факториел на число?
Факториелът на положително число е произведението на всички положителни цели числа, по-малки или равни на стойността на самото число. Число, последвано от удивителен знак (!), обозначава факториел на число. Вие представяте факториела на пет като 5! и го изчислете като:
5! = 5 * 4 * 3 * 2 * 1 = 120
Друг начин да го визуализирате е:
5! = 5 * 4! къде 4! = 4 * 3!, 3! = 3 * 2! и така докато получите 1! = 1 * 0! което е 1.
Ще използвате тази концепция, за да изградите нашата факториална програма, използвайки популярна концепция, наречена рекурсия.
Какво е рекурсия?
Рекурсията е процес, при който функция извиква сама себе си. Едно от основните предимства на този процес е, че той разделя по-голям проблем на по-малки части. Това прави проблема по-лесен за решаване.
Можете да използвате рекурсия за решаване на подходящи проблеми в три лесни стъпки:
- Намерете основния случай: Ако една функция винаги се извиква сама, процесът ще бъде безкраен. За да предотвратите това да се случи, дефинирайте базов случай, който се превръща в логическа точка на спиране на вашата функция. Например в факторна програма спрете изчислението на нула. Това става основният случай за проблема.
- Намерете връзката между проблема и подпроблемите: Разбийте по-големия проблем на подпроблем. Например проблемът е да се намери факториел на пет. Да приемем, че имате отговора на факториел от четири, което е 24. Как ще получите факториел от пет, като използвате 24? Като умножи себе си пет в него. Това е връзката между проблема и подпроблема.
- Обобщете връзката, намерена в стъпка 2: Сега, след като имате връзката, обобщете я по отношение на n. И така, факториелът на число n е произведението на n и факториелът на n-1.
Можете да използвате тази концепция за намерете сумата от n естествени числа, изчислете GCD, LCM, редицата на Фибоначи и проверете простите числа.
Псевдо код за факторната функция, използваща рекурсия
Това е как използвате рекурсия и напишете псевдо кода, за да създадете вашата програма на всеки език. При различните езици синтаксисът и изпълнението се променят, но логиката остава непокътната.
функцияФакт(н)
Ако n == 0 тогава // основен случай
Връщане1
Връщане n * Факт на повикване (n - 1) // обобщена връзка
Факторна програма в C
C беше първият език за програмиране на високо ниво, независим от платформата. Той има строг синтаксис, чувствителен е към главни и малки букви и изпълнява код с най-бързата скорост. Това е процедурен език за програмиране и следователно вие декларирате всяка функция върху основен функция. Ето как можете да изградите факторна програма, използвайки рекурсия на език C:
Можете да намерите целия изходен код на факторната програма, използвайки рекурсия в C, Java и Python в това GitHub хранилище.
- Импортирайте стандартния входно-изходен заглавен файл за показване на изхода на екрана.
#включи <stdio.h>
- Определете функция факт и вземете цяло число н като аргумент.
вътрфакт(вътр н){
- Напишете основния случай на функцията, като използвате ако изявление и проверете равенството му с помощта на ==. Ако n е равно на нула, върнете едно.
ако (n == 0)
връщане1; - Напишете обобщеното уравнение и върнете произведението на н с извикване на функция на подпроблем n-1.
връщане n * факт (n - 1);
} - Декларирайте основната функция и инициализирайте променлива от целочислен тип, за да съхраните числото, чийто факториел искате да намерите.
вътросновен(){
вътр брой = 5; - Покажете факториела на числото с помощта на printf() функция. %д е спецификатор на десетичен формат. Използвайте всеки от спецификаторите на формата, за да го замените с числото, чийто факториел искате да намерите и да получите резултата, като извикате функцията.
printf("Факториел на %d е %d", брой, факт (брой));
връщане0;
}
Факторна програма в Java
Java е компилиран език за програмиране и е независим от платформата. Вие съхранявате целия код в a клас и изпълнението започва от основен функция. Той е чувствителен към малки и малки букви и е строг синтаксис. Кодът е малко по-дълъг, но по-бърз в сравнение с Python. Ето как можете да изградите факториалната програма, използвайки рекурсия в Java:
- Дефинирайте главния клас.
класОсновен{
- Дефинирайте статична функция с тип връщане int, която приема променлива n от целочислен тип. Декларирахте статичен метод като основен метод в Java също се декларира като статичен. Освен това не можете да извикате нестатичен метод от статичен екземпляр.
статиченвътрфакт(вътр н){
- Напишете основния случай на функцията, като използвате ако изявление и проверете равенството му с помощта на ==. Ако n е равно на нула, върнете едно.
ако (n == 0)
връщане1; - Напишете обобщеното уравнение и върнете произведението на н с извикване на функция на подпроблем n-1.
връщане n * факт (n - 1);
} - Декларирайте основната функция в Java. Декларирайте модификатора за достъп като публичен, така че да може да бъде достъпен от всички други класове и методи. Вие декларирате основната функция като статичен така че компилаторът да може да го извика, без да инстанцира класа. Типът връщане е празен, и приема аргументи от тип низ. Запазете числото, чийто факториел искате да намерите.
публиченстатиченневалиденосновен(Низ [] аргументи){
вътр брой = 5; - Използвай println() метод, екземпляр на PrintStream клас, определен в Система клас за показване на факториела на числото.
System.out.println("Факториал на " + номер + " е " + факт (брой));
}
}
Факторна програма в Python
Писането на код в Python е супер лесно и забавно. Тъй като това е интерпретиран език, независим от платформата, не е необходимо да декларирате типа данни на променливите. Освен това избягвате да се налага да декларирате класове и да импортирате библиотеки за такава проста програма. Детската площадка е готова да започнете да кодирате.
Синтаксисът е по-лесен, с малка дължина на кода, но отнема малко повече време за изпълнение в сравнение с другите езици. Ето как можете да изградите факторна програма с помощта на рекурсия в Python:
- Дефинирайте функция fact, която приема като аргумент n.
деффакт(н):
- Напишете основния случай на функцията, като използвате ако изявление и проверете равенството му с помощта на ==. Ако n е равно на нула, върнете едно.
ако n == 0:
връщане1 - Напишете обобщеното уравнение и върнете произведението на н с извикване на функция на подпроблем n-1.
връщане n * факт (n-1)
- Запазете числото, чийто факториел искате да намерите, и го покажете с помощта на израза за печат.
брой = 5;
печат ("Факториал на", брой, "е", факт (брой))
Има много приложения на рекурсията
Рекурсията е ефективен начин за решаване на проблеми. Това е същината на изкуствения интелект и се използва в реалния свят в пъзел игри като шах или судоку.
Това също е мощен метод за сортиране на структури от данни като дърво или алгоритми за сортиране като бързо сортиране и сортиране чрез сливане. Можете също така да използвате рекурсия в алгоритми за търсене като двоично търсене, математически изрази като реда на Фибоначи и др.