Vajadzību atkārtot kodu nekad nevar novērtēt par zemu, meklējot risinājumus dažām pasaules lielākajām problēmām. Jums jāzina, ka programmēšanā atkārtošanai ir viena no divām formām - iterācija vai rekursija.

Mērķis šeit ir iepazīstināt jūs ar atkārtošanos kodā un parādīt, kā to var izmantot, lai uzlabotu jūsu Java programmas.

Atkārtotas programmas var jums palīdzēt atrisināt dažas no vissarežģītākajām programmēšanas problēmām. Lūk, kas jums jāzina, lai izveidotu rekursīvas programmas Java.

Izmantojot atkārtojumu

Atkārtojums koda atkārtošanai izmanto cilpas struktūru. Trīs iteratīvo struktūru veidi ir pirms testa cikls (while), pēc testa cikls (do-while) un pretkontrolēta cilpa (priekš).

Šīs iteratīvās struktūras darbojas, atkārtojot koda bloku, kamēr paliek noteikts nosacījums taisnība, bet tiklīdz šis nosacījums kļūst nepatiess, cilpa apstājas un programma atgriežas normālā stāvoklī plūsma.

Piemēram, mēs varētu izmantot vienu no iteratīvajām struktūrām, lai atrisinātu visu skaitļu summas no 1 līdz n problēmu. Atkarībā no izmantotās iteratīvās struktūras risinājumam būs noteikta forma, bet jebkura no tām trīs iteratīvās struktūras var nodrošināt šīs problēmas risinājumu, izmantojot sekojošo pseidokods.

instagram viewer

Iterācijas pseidokoda piemērs


SĀKT
DECLEARE summa, skaitāma kā vesels skaitlis
summa = 0
skaits = 1
ATKĀRTOT
Summa = summa + skaitīšana
Skaitīt = skaitīt + 1
LĪDZ skaitam> n
BEIGT

Iepriekš minētajam pseidokodam ir divi mainīgie, summa un skaits, kas tiek inicializēti attiecīgi uz 0 un 1. Mainīgais "count" tiek inicializēts uz 1, jo problēma, kuru mēs mēģinām atrisināt, norāda, ka mums ir nepieciešama visu veselu skaitļu summa no 1 līdz n.

Mainīgajam “n” no lietotāja tiks piešķirts nejaušs skaitlis, un mainīgais “count” palielināsies par vienu laikā, kad tiek veikta cilpa, bet tiklīdz mainīgā “count” vērtība pārsniedz “n” vērtību, cilpa to izdarīs apstāties.

Kāpēc izmantot rekursiju?

Ja mēs pārbaudītu faktus, kas saistīti ar atkārtojumu un rekursiju, mēs atklāsim, ka vairākas lietas ir patiesas.

  • Abas metodes ietver atkārtojumu.
  • Abām metodēm nepieciešams testa nosacījums, kas norādīs, kad apstāties.
  • Abas metodes teorētiski var izpildīt uz visiem laikiem, ja nav norādīts vai izpildīts izejas nosacījums.
  • Jebkuru problēmu, kuru var atrisināt, izmantojot atkārtojumu, var atrisināt arī, izmantojot rekursiju un otrādi.

Kāpēc tad mēs gribētu izvēlēties vienu metodi, nevis otru? Vienkārša atbilde ir efektivitāte. Izmantojot rekursiju, programmētājs var izmantot mazāk kodu, lai sasniegtu būtībā to pašu rezultātu. Mazāk koda nozīmē, ka ievērojami samazinās kļūdu nepamanīšanas iespēja.

Rekursija izmanto vairāk atmiņas un ir lēnāka nekā atkārtojums, taču tajā ir iebūvēta kaudze (datu struktūra). Izmantojot atkārtojumu, jums būs jāveido datu struktūra (būtībā no jauna jāizgudro ritenis), atstājot jūsu programmu pieejamu lielākai iespējamībai noķert kļūdas papildu koda dēļ.

Saistīts: Java izņēmumi: vai jūs pareizi rīkojaties ar viņiem?

Kā darbojas rekursija

Rekursija ir nosaukums, kas piešķirts procesam, kurā funkcija atkārtoti sauc sevi, līdz tiek izpildīts noteikts nosacījums. Šī atkārtotā metode atrisina problēmas, sadalot tās mazākās, vienkāršākās pašu versijās.

Katra rekursīvā funkcija sastāv no divām daļām - pamata gadījuma un vispārīgā gadījuma.

Rekursīvās funkcijas piemēra pamatstruktūra


Funkcija () {
// pamata lieta
// vispārīgs gadījums
}

Bāzes gadījums ir rekursīvās funkcijas sadaļa, kas atrisina problēmu. Tātad, ikreiz, kad rekurzīvā funkcija nonāk bāzes gadījumā, programma iziet no rekursīvās funkcijas un turpina savu dabisko plūsmu.

Vispārīgais gadījums ir rekursīvās funkcijas sadaļa, kas atkārtojas. Tas ir tas, kur funkcija sevi sauc un kur tiek veikta lielākā daļa darba.

Rekursijas izmantošana Java

Dažas programmēšanas valodas atbalsta tikai iterāciju, bet citas tikai rekursiju. Par laimi Java ir viena no valodām, kas atbalsta abas atkārtojošās metodes.

Java rekurss tiek izmantots gandrīz tāpat kā jebkurā citā valodā, kas to atbalsta. Galvenais vienmēr ir nodrošināt, lai jūsu rekursīvajai funkcijai būtu gan pamats, gan vispārīgs gadījums šādā secībā.

Atgriezīsimies pie mūsu sākotnējā summēšanas piemēra. Mērķis ir atrast visu veselu skaitļu summu no 1 līdz n, kur n ir lietotāja sniegts vesels skaitlis.

Java rekursijas piemērs


// rekursīvā funkcija
int Sum (int n) {
// pamata lieta
ja (n <= 1) {
atgriezties 1;
}
// vispārīgs gadījums
cits {
atgriešanās n + summa (n-1);
}
}

Iepriekš rekursīvā funkcija aizņem veselu skaitli “n” un pārtrauc tās izpildi tikai tad, ja n vērtība ir mazāka vai vienāda ar 1.

Ja mums būtu jānodod veselais skaitlis 5 iepriekšējai programmai, mainīgais "n" uzņemtos vērtību 5. Pēc tam “n” vērtība tiktu pārbaudīta pamata gadījumā, taču, ņemot vērā, ka 5 ir lielāks par 1 “n” tagad tiks nodots vispārīgajam gadījumam.

Šajā piemērā vispārīgais gadījums rekursīvo funkciju izsauks četras reizes. Pēc pēdējā funkcijas izsaukuma “n” vērtība būs 1, kas faktiski atbildīs pamata gadījuma prasībām, kā rezultātā tiks pārtraukta rekursīvā funkcija un atgriezta 15.

Ja mainīsim “n” vērtību uz 7, rekursīvā funkcija sevi izsauks sešas reizes un atgriezīs 28, pirms pārtrauks tās izpildi.

Vai vēlaties izmēģināt pats? Iepriekš minēto rekursīvo programmu var izpildīt, izmantojot Java kodu galvenajā funkcijā šādu koda rindu.


System.out.println (summa (7));

Ko jūs uzzinājāt

Ja jūs to izdarījāt, izmantojot visu šo rakstu, jums tagad ir pamatzināšanas par divām atkārtotajām metodēm, kuras tiek izmantotas programmēšanā. Tagad jūs saprotat iterācijas un rekursijas līdzību un to, kāpēc izstrādātājs izvēlētos rekursiju izmantot vairāk nekā iterācija, kā arī to, kā Java izmantot rekursīvo funkciju.

Attēlu kredīts: ThisIsEngineering /Peksels

E-pasts
Kas ir rekursija un kā jūs to izmantojat?

Uzziniet rekursijas pamatus, kas ir būtisks, taču nedaudz prātu saliekošs rīks programmētājiem.

Lasiet Tālāk

Saistītās tēmas
  • Programmēšana
  • Java
Par autoru
Kadeiša Kīna (Publicēti 7 raksti)

Kadeisha Kean ir pilnas programmatūras izstrādātājs un tehnisko / tehnoloģiju rakstnieks. Viņai ir īpaša spēja vienkāršot dažus no vissarežģītākajiem tehnoloģiskajiem jēdzieniem; ražo materiālu, kuru viegli var saprast jebkurš iesācējs tehnoloģija. Viņa aizrauj rakstīšanu, interesantas programmatūras izstrādi un ceļošanu pa pasauli (izmantojot dokumentālās filmas).

Vairāk no Kadeisha Kean

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam par tehniskiem padomiem, atsauksmēm, bezmaksas e-grāmatām un ekskluzīviem piedāvājumiem!

Vēl viens solis !!!

Lūdzu, apstipriniet savu e-pasta adresi e-pastā, kuru tikko nosūtījām.

.