C ++ funkcja rekurencyjna

C ++ funkcja rekurencyjna
Proces, w którym określona funkcja wywołuje bezpośrednio lub pośrednio, jest znany jako rekurencja i że odpowiednia funkcja jest funkcją rekurencyjną. Proces rekurencji dotyczy iteracji kilku liczb do tej samej funkcji. Aby zakończyć wykonanie procesu rekurencji, musimy mieć przypadek podstawowy, a następnie jakikolwiek warunek. W tym samouczku wykorzystuje udział funkcji rekurencji w C ++, więc przed przeczytaniem musisz zapoznać się z podstawami tego języka programowania.

Rekursja jest skutecznym podejściem do rozwiązania problemów takich jak złożone zadania obliczeniowe matematyczne. Odbywa się to poprzez rozpowszechnianie zadania na poddziały. Proces ten odbywa się poprzez przestrzeganie zasady podziału i podbijania. Nie jest to obowiązkowa rzecz, aby zawsze korzystać z procesu rekurencji w programie do powtórzenia. Każdy problem, który jest rozwiązywany poprzez rekurencję, można również rozwiązać poprzez iterację. Ale funkcja rekurencyjna jest bardziej wydajna w programowaniu, ponieważ kod jest bardzo krótki i łatwo zrozumiały podczas wykonywania tego samego zadania. Proces rekurencji jest zawsze zalecany w przypadku problemów, takich jak wyszukiwanie i sortowanie, przemieszczanie drzew itp.

Notatka: Proces rekurencji musi mieć warunek zakończenia lub klasę podstawową. W drugim przypadku doprowadzi to do nieskończonych egzekucji jak pętla iteracji.

Składnia funkcji rekurencyjnej (C ++)

Podstawowa składnia funkcji rekurencyjnej podano jako:

void recurse ()
// Sprawozdania)
reurse ();

Pojęcie polega na podzieleniu problemu na wiele mniejszych problemów, a następnie dodanie wszystkich warunków podstawowych, które mogą zatrzymać rekurencję.

Warunek podstawowy

W każdym programie rekurencyjnym rozwiązanie większego problemu wyraża się w mniejszych problemach.

int fakt (int n)

if (n < = 1) // base case
zwrot 1;
w przeciwnym razie
„Inne stwierdzenie”

Oświadczenie/warunek 'n < =1' is defined here, and hence the larger value can be solved by converting to a smaller one until the condition of the base case is fulfilled. If we don't use a base condition in our program, then there will be no ending point specifying the code, the infinite execution will occur. Here we will use a sample example.

Prosta funkcja

Teraz rozważ próbkę funkcji rekurencyjnej, w której przyjmujemy wartość w programie głównym, a następnie przekazujemy ją do funkcji. Wewnątrz funkcji używamy instrukcji IF-Else. Część instrukcji „jeśli” odnosi się do warunku podstawowego w celu zakończenia funkcji lub ograniczenia wyjścia. Zostanie to zastosowane, gdy wartość jest mniejsza niż 1.

If (val < 1)

Podczas gdy główna funkcja jest stosowana w części „else” funkcji. To jest funkcja rekurencyjna.

# Funkcja (val - 1)

Wartość jest wyświetlana przed i po tej instrukcji, więc wyjście będzie zawierało liczby w zejściu i w kolejności rosnącej. Wykonanie kodu odbywa się za pośrednictwem kompilatora G ++. „-O” służy do zapisania wyjścia kodu źródłowego w pliku wyjściowym.

$ g ++ -o r1 r1.C
$ ./R1

Teraz chcemy zobaczyć efekt stanu podstawowego w tym programie. Zobaczymy wynikową wartość; Jeśli usuniemy instrukcję IF-ELSE z tego samego programu, co opisano powyżej, jakie będzie wyjście.

Możesz zobaczyć, że reszta kodu pozostaje niezmieniona po usunięciu instrukcji warunkowej. Po usunięciu instrukcji podstawowej wyjście będzie wyglądać jak poniższy obraz. Nie będzie określonego punktu końcowego dla tego wykonania. Możesz zauważyć, że wyjście to nieskończony rodzaj pojedynczej liczby.

To samo wyjście trwa wiele linii, aż zostanie wyświetlona wiadomość z zrzutu rdzenia.

Działanie rekurencji

Załóżmy, że programista jest gotów określić sumę pierwszych liczb N, istnieje wiele sposobów określenia sumę, ale najprostszym jest dodanie liczb, zaczynając od 1 do n. Więc funkcja będzie wyglądać tak:

F (n) = 1+2+3+4+5+…+n

Powyższy przykład to proste dodanie liczb. Drugie podejście dotyczy użycia funkcji rekurencyjnej.

F (n) = 1 n = 1
F (n) = n + f (n-1) n> 1

Teraz możesz wskazać różnicę między obiema podejść. W drugim podejściu F () jest podstawową odmiennością, jak sama się nazywa.

Rekurencja jest dwoma typami. Jeden to bezpośrednia rekurencja. Druga to pośrednia rekurencja. Funkcja nazywana jest pośrednią rekurencją, jeśli ma wywołanie funkcji dla innej funkcji i że inna funkcja wywołuje pierwszą funkcję bezpośrednio lub pośrednio. Próbka do bezpośredniej rekurencji jest zilustrowana jako:

Int f (int n)
F (n);
// jakiś kod

Podczas gdy próbka do rekurencji pośredniej jest reprezentowana jako:

void f (int n)
f1 ();
void f1 (int n)
F();
powrót;

Będziemy teraz rozwinąć oba rodzaje funkcji rekurencyjnych za pomocą podstawowych przykładów.

Bezpośrednia rekurencja

Przykład 1

Ten przykład dotyczy obliczeń serii Fibonaccie. Znowu koncepcja jest taka sama; Do zatrzymania stanu stosuje się instrukcję warunkową; wartość powinna być równa zero. W przeciwnym razie, jeśli wartość jest równa 1 lub 2, zwróci 1. Ponieważ ta formacja serii wymaga 2 liczb, więc liczba użyta w programie głównym powinna być większa niż 2. Formuła stwierdzenia dla Fibonacci jest napisana w sztuce „else”. Jest to głównie rekurencja programu.

# Funkcja (val - 1) + funkcja (val - 2))

Podczas gdy główna funkcja zainicjuje funkcjonalne połączenie omijające wartość. Ta wartość to liczba, do której powinno być wyjście. Wyjście można sprawdzić za pośrednictwem terminalu Linux przez kompilator G ++.

Przykład 2

Ten przykład dotyczy obliczeń czynnikowych liczby. Do tych obliczeń liczba musi być większa niż 1, więc tutaj zastosowaliśmy stan podstawowy; Jeśli ta część instrukcji „If” zostanie spełniona, program zostanie rozwiązany; W przeciwnym razie operacja matematyczna jest stosowana do liczby.

Funkcja val * (val - 1)

Jest to funkcja rekurencji, w której odpowiedź funkcji jest ponownie wykorzystywana w wywołaniu funkcji.

Wynikowa wartość pokazano poniżej.

Pośrednia rekurencja

Zastosujemy te same obliczenia pośrednie czynnikowe. Jak opisaliśmy wcześniej, że w rekurencji pośredniej funkcje tego nie nazywają, więc potrzebujemy innej funkcji do tego celu. Weźmy przykład, który ma dwie funkcje. W funkcji A funkcja rekurencji jest deklarowana w taki sam sposób jak w poprzednim przykładzie, ale wywołanie funkcji dotyczy drugiej funkcji, funkcji-B. Funkcja B zawiera tę samą metodę obliczeniową i zawiera rekurencyjne wywołanie funkcji A.

W programie głównym powstaje wywołanie funkcji A.

Kiedy zobaczysz dane wyjściowe, zauważysz, że odpowiedź dla obu metod rekurencji jest taka sama, ale tylko różnica w zastosowanym podejściu.

Wniosek

„C ++ Recursive Funkcja” ma wiele zalet, ponieważ jest używana w procesach wyszukiwania i sortowania. Stan podstawowy odgrywa główną rolę w wykonywaniu rekurencji, ponieważ ogranicza wyjście i nieskończone wykonywanie. Wyjaśniono tutaj powszechnie używane przykłady, aby zapewnić użytkownikowi zrozumienie rekurencji.