<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="lt">
	<id>https://wiki.pitonas.lt/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mantas</id>
	<title>Pitonas - Naudotojo indėlis [lt]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.pitonas.lt/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mantas"/>
	<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/Specialus:Ind%C4%97lis/Mantas"/>
	<updated>2026-10-07T01:24:58Z</updated>
	<subtitle>Naudotojo indėlis</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.pitonas.lt/index.php?title=Vadov%C4%97lis/Rekursin%C4%97s_funkcijos&amp;diff=219</id>
		<title>Vadovėlis/Rekursinės funkcijos</title>
		<link rel="alternate" type="text/html" href="https://wiki.pitonas.lt/index.php?title=Vadov%C4%97lis/Rekursin%C4%97s_funkcijos&amp;diff=219"/>
		<updated>2023-02-10T09:45:54Z</updated>

		<summary type="html">&lt;p&gt;Mantas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{navigation |previous=Funkcijų apibrėžimas |next=Sąrašai}}&lt;br /&gt;
&lt;br /&gt;
Vieniems šis skyrius gali pasirodyti naudingas, o kitiems - painus. Jeigu tau informacija pasirodys paini, tai nesuk galvos ir praleisk,  prie šio skyriaus galėsi grįžti šiek tiek vėliau. &lt;br /&gt;
&lt;br /&gt;
O dabar pabandom pasižiūrėti į klaidingai parašytą programą:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def manoFunkcija(): &lt;br /&gt;
    print(&amp;quot;labas&amp;quot;)&lt;br /&gt;
    manoFunkcija() # ojojoi!&lt;br /&gt;
&lt;br /&gt;
manoFunkcija()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tokia programa keletą kartų parašys žodį &amp;lt;code&amp;gt;labas&amp;lt;/code&amp;gt; ir tada &amp;lt;b&amp;gt;nuluš&amp;lt;/b&amp;gt;... tai yra, galiausiai išspausdins kokią nors mįslingą klaidą, kaip &amp;lt;code&amp;gt;RecursionError: maximum recursion depth exceeded&amp;lt;/code&amp;gt;. Kodėl?&lt;br /&gt;
&lt;br /&gt;
Priežastis ta, kad &amp;lt;code&amp;gt;manoFunkcija&amp;lt;/code&amp;gt; kiekvieną kartą kviečia save, tai yra, kviečia funkciją &amp;lt;code&amp;gt;manoFunkcija&amp;lt;/code&amp;gt;. O tada &amp;lt;code&amp;gt;manoFunkcija&amp;lt;/code&amp;gt; vėl kviečia save, tai yra &amp;lt;code&amp;gt;manoFunkcija&amp;lt;/code&amp;gt;. Ir taip be galo! &lt;br /&gt;
&lt;br /&gt;
Štai dar vienas panašus (irgi blogas) pavyzdys, pasižiūrėkim:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def pirmaFunkcija():&lt;br /&gt;
    print(&amp;quot;pirma&amp;quot;)&lt;br /&gt;
    antraFunkcija()&lt;br /&gt;
&lt;br /&gt;
def antraFunkcija(): &lt;br /&gt;
    print(&amp;quot;antra&amp;quot;)&lt;br /&gt;
    pirmaFunkcija() &lt;br /&gt;
&lt;br /&gt;
pirmaFunkcija()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vėl nulūš programa, vėl nutiks klaida &amp;lt;code&amp;gt;RecursionError&amp;lt;/code&amp;gt;. Priežastis ta pati: &amp;lt;code&amp;gt;pirmaFunkcija&amp;lt;/code&amp;gt; visuomet kviečia funkciją &amp;lt;code&amp;gt;antraFunkcija&amp;lt;/code&amp;gt;, o ši visuomet kviečia &amp;lt;code&amp;gt;pirmaFunkcija&amp;lt;/code&amp;gt;. Ir taip be galo! Nei iš vienos funkcijos niekuomet nėra grįžtama.&lt;br /&gt;
&lt;br /&gt;
Aš paprastai labai atsargiai žiūriu į funkcijas, kurios kviečia pačios save (tiesiogiai arba netiesiogiai), kaip kad pavyzdžiuose aukščiau.&lt;br /&gt;
&lt;br /&gt;
Tačiau iš tiesų net ir tokias funkcijas įmanoma panaudoti, nesugriaunant programos. Tiesiog tokia funkcija turi kažkada nustoti kviesti save, ir tiesiog grįžti (&amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Štai nenulūžtančios programos pavyzdys:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def manoFunkcija(skaitiklis): &lt;br /&gt;
    skaitiklis = skaitiklis + 1&lt;br /&gt;
    if skaitiklis &amp;gt; 3:&lt;br /&gt;
        return&lt;br /&gt;
    print(&amp;quot;labas&amp;quot;)&lt;br /&gt;
    manoFunkcija(skaitiklis) &lt;br /&gt;
&lt;br /&gt;
manoFunkcija(0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ši programa žodį &amp;quot;labas&amp;quot; išspausdins tik 3 kartus, ir tada baigsis. Jokios klaidos. Ar supratai, kodėl?&lt;br /&gt;
&lt;br /&gt;
Parametras &amp;quot;skaitiklis&amp;quot; yra skirtas apsaugai nuo begalinio kartojimosi. Funkcija &amp;lt;code&amp;gt;manoFunkcija&amp;lt;/code&amp;gt; kiekvieną kartą stropiai pasitikslina, ar &amp;lt;code&amp;gt;skaitiklis&amp;lt;/code&amp;gt; neviršytas, ir kiekvieną kartą pasididina to skaitiklio reikšmę. Kai tik skaitiklis padidėjau daugiau, nei leidžiama, funkcija savęs nebekviečia - tiesiog grįžta.&lt;br /&gt;
&lt;br /&gt;
Taigi, nors funkcija ir kviečia pati save, bet ne begalinį kartų skaičų.&lt;br /&gt;
&lt;br /&gt;
==== Rekursija ====&lt;br /&gt;
Funkcijos, kurios kreipiasi pačios į save yra vadinamos rekursinėmis funkcijomis. Šio skyriaus pavyzdžiuose panagrinėsime tokias funkcijas. Tai palengvina programavimo užduočių spendimų įgyvendinimą, nes kartais pakanka apsvarstyti tik vieną problemos žingsnį, o ne visą problemą iš karto. Be to tai leidžia išreikšti kai kurias matematines sąvokas paprastu, lengvai skaitomu kodu.&lt;br /&gt;
&lt;br /&gt;
Bet kokią problemą, kurią galime išspręsti naudojant rekursiją, gali būti išspręsta naudojant ciklus. Jie veikia greičiau, bet kartais ciklus sunku atlikti teisingai.&lt;br /&gt;
&lt;br /&gt;
Turbūt intuityviausias „rekursijos“ apibrėžimas yra toks:&lt;br /&gt;
  REKURSIJA&lt;br /&gt;
     Jei vis dar nesupranti, tai skaityk: REKURSIJA.&lt;br /&gt;
Pabandyk perskaityti dar kelis pavyzdžius.&lt;br /&gt;
&lt;br /&gt;
=== Pavyzdžiai ===&lt;br /&gt;
&#039;&#039;&#039;atgalinis_skaičiavimas.py&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def atgalinis_skaičiavimas(n):&lt;br /&gt;
    print(n)&lt;br /&gt;
    if n &amp;gt; 0:&lt;br /&gt;
        return atgalinis_skaičiavimas(n-1)&lt;br /&gt;
&lt;br /&gt;
atgalinis_skaičiavimas(5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
 5&lt;br /&gt;
 4&lt;br /&gt;
 3&lt;br /&gt;
 2&lt;br /&gt;
 1&lt;br /&gt;
 0&lt;br /&gt;
&lt;br /&gt;
Šis pavyzdys labai panašus į ankstesnyjį, tik skaitiklis ne didėja, o mažėja. Rekursinė funkcija &amp;lt;code&amp;gt;atgalinis_skaičiavimas&amp;lt;/code&amp;gt; turi vidinę apsaugą nuo begalinio kartojimosi, tikrina kintamąjį &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; ir jį mažina, o nustoja save kvietinėti, kai &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; sumažėja iki nulio.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sudetingas_pavyzdys.py&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def daug(a, b): # daug reiškia daugybą&lt;br /&gt;
    if b == 0:&lt;br /&gt;
        return 0&lt;br /&gt;
    lik = daug(a, b - 1) #lik reiškia likutį&lt;br /&gt;
    reikšmė = a + lik&lt;br /&gt;
    return reikšmė&lt;br /&gt;
&lt;br /&gt;
rezultatas = daug(3, 2)&lt;br /&gt;
print(&amp;quot;3 * 2 = &amp;quot;, rezultatas)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Iš esmės ši programa - tai teigiamų sveikųjų skaičių daugyba (iš tikrųjų Python&#039;o programavimo kalboje daugybos funkcionalumas yra integruotas ir jo išradinėti nebūtina, tiesiog mes pabandėme suprogramuoti, kaip daugybą galima būtų pakeisti sudėties ir atimties veiksmais). &lt;br /&gt;
&lt;br /&gt;
; Kas nutinka, pirmą kartą iškvietus funkciją daug(3, 2)?&lt;br /&gt;
: Parametras &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; gauna jam priskirtą reikšmę 3, o parametras &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; - jam priskirtą reikšmę 2.&lt;br /&gt;
; Kas nutinka tada?&lt;br /&gt;
: Vykdoma eilutė &amp;lt;code&amp;gt;if b == 0:&amp;lt;/code&amp;gt;. Kadangi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; reikšmė yra 2, todėl eilutė &amp;lt;code&amp;gt;return 0&amp;lt;/code&amp;gt; praleidžiama.&lt;br /&gt;
; Kas vyksta toliau?&lt;br /&gt;
: Vykdoma eilutė &amp;lt;code&amp;gt;lik = daug(a, b - 1)&amp;lt;/code&amp;gt;. Ši eilutė nustato lokalaus kintamojo &amp;lt;code&amp;gt;lik&amp;lt;/code&amp;gt; reikšmę į &amp;lt;code&amp;gt;daug(a, b - 1)&amp;lt;/code&amp;gt; reikšmę. &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; reikšmė yra 3, o &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; - 2, todėl funkcija kviečia funkciją &amp;lt;code&amp;gt;daug(3, 1)&amp;lt;/code&amp;gt;&lt;br /&gt;
; Taigi kokia yra &amp;lt;code&amp;gt;daug(3, 1)&amp;lt;/code&amp;gt; reikšmė?&lt;br /&gt;
: Turime iškviesti funkciją &amp;lt;code&amp;gt;daug()&amp;lt;/code&amp;gt; su parametrais 3 ir 1.&lt;br /&gt;
; Kas nutinka toliau?&lt;br /&gt;
: Funkcijos viduje &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; reikšmė būtų 3, o &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; reikšmė – 1. Kadangi jie yra lokalūs kintamieji, todėl jie neturi įtakos ankstesnėms &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; reikšmėms.&lt;br /&gt;
; Kas įvyksta toliau?&lt;br /&gt;
: Kadangi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; turi reikšmę 1, if sąlygos rezultatas yra neigiamas, todėl vykdoma kita eilutė &amp;lt;code&amp;gt;lik = daug(a, b - 1)&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Ką daro ši eilutė?&lt;br /&gt;
: Dabar kintamajam &amp;lt;code&amp;gt;lik&amp;lt;/code&amp;gt; priskiriam funkcijos &amp;lt;code&amp;gt;daug(3, 0)&amp;lt;/code&amp;gt; reikšmė.&lt;br /&gt;
; Kokia ši reikšmė?&lt;br /&gt;
: Norėdami tai išsiaiškinti, turime dar kartą paleisti funkciją. Šį kartą &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; reikšmė yra 3, o &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; – 0.&lt;br /&gt;
; Kas vyksta toliau?&lt;br /&gt;
: Pirmoji vykdytinos funkcijos eilutė yra &amp;lt;code&amp;gt;if b == 0:&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; reikšmė 0, todėl kita vykdoma eilutė yra &amp;lt;code&amp;gt;return 0&amp;lt;/code&amp;gt;&lt;br /&gt;
; Ką daro &amp;lt;code&amp;gt;return 0&amp;lt;/code&amp;gt; eilutė?&lt;br /&gt;
: Ši eilutė grąžina funkcijos reikšmę lygią 0 į tą vietą, kur ji buvo iškviesta.&lt;br /&gt;
; Kas iš to?&lt;br /&gt;
: Dabar mes žinome, kad &amp;lt;code&amp;gt;daug(3, 0)&amp;lt;/code&amp;gt; grąžina reikšmę 0. Dar žinome, ką daro eilutė &amp;lt;code&amp;gt;lik = daug(a, b - 1)&amp;lt;/code&amp;gt;, nes paleidžiame funkciją &amp;lt;code&amp;gt;daug()&amp;lt;/code&amp;gt; su parametrais 3 ir 0. Baigiame vykdyti &amp;lt;code&amp;gt;daug(3, 0)&amp;lt;/code&amp;gt; ir dabar vėl pradedame vykdyti &amp;lt;code&amp;gt;daug(3, 1)&amp;lt;/code&amp;gt;. Kintamajam &amp;lt;code&amp;gt;lik&amp;lt;/code&amp;gt; priskiriama reikšmė yra 0.&lt;br /&gt;
; Kurią eilutę kompiuteris skaito po to?&lt;br /&gt;
: Toliau vykdoma eilutė &amp;lt;code&amp;gt;reikšmė = a + lik&amp;lt;/code&amp;gt;. Žinome, kad &amp;lt;code&amp;gt;a = 3&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;lik = 0&amp;lt;/code&amp;gt; todėl dabar &amp;lt;code&amp;gt;reikšmė = 3&amp;lt;/code&amp;gt;. &lt;br /&gt;
; Kas nutinka toliau?&lt;br /&gt;
: Vykdoma eilutė &amp;lt;code&amp;gt;return reikšmė&amp;lt;/code&amp;gt;, kuri grąžina reikšmę 3. Šis skaičius atsiranda iš funkcijos &amp;lt;code&amp;gt;daug (3, 1)&amp;lt;/code&amp;gt; vykdymo. Iškvietus &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;, grįžtame prie &amp;lt;code&amp;gt;daug(3, 2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Kur yra &amp;lt;code&amp;gt;daug(3, 2)&amp;lt;/code&amp;gt;?&lt;br /&gt;
: Mes turėjome kintamuosius &amp;lt;code&amp;gt;a = 3&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;b = 2&amp;lt;/code&amp;gt; ir nagrinėjome eilutę &amp;lt;code&amp;gt;lik = daug(a, b - 1)&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Kas įvyksta?&lt;br /&gt;
: Kintamajam &amp;lt;code&amp;gt;lik&amp;lt;/code&amp;gt; priskiriama reikšmė 3. Kita eilutė &amp;lt;code&amp;gt;reikšmė = a + lik&amp;lt;/code&amp;gt; priskiria kintamajam &amp;lt;code&amp;gt;reikšmė&amp;lt;/code&amp;gt; reikšmę &amp;lt;code&amp;gt;3 + 3&amp;lt;/code&amp;gt; arba 6.  &lt;br /&gt;
; Kas įvyksta toliau?&lt;br /&gt;
: Pradedama vykdyti kita eilutė, kuri grąžina 6 iš funkcijos. Tuomet grįžtame prie eilutės &amp;lt;code&amp;gt;rezultatas = daug(3, 2)&amp;lt;/code&amp;gt;, kur kintamajam &amp;lt;code&amp;gt;rezultatas&amp;lt;/code&amp;gt; dabar priskiriama reikšmė 6 &lt;br /&gt;
; Kas nutinka toliau?  &lt;br /&gt;
: Paleidžiama kita eilutė po funkcijos &amp;lt;code&amp;gt;print (&amp;quot;3 * 2 =&amp;quot;, rezultatas)&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Ką ji daro?&lt;br /&gt;
: Ji spausdina &amp;lt;code&amp;gt;3 * 2 =&amp;lt;/code&amp;gt; ir &amp;lt;code&amp;gt;rezultatas&amp;lt;/code&amp;gt; reikšmę, kuri yra 6. Visa išspausdinta eilutė yra &amp;lt;code&amp;gt;3 * 2 = 6&amp;lt;/code&amp;gt;.&lt;br /&gt;
; Taigi, kas čia įvyko apskritai?  &lt;br /&gt;
: Iš esmės panaudojome du skirtingus faktus, kad apskaičiuotume dviejų skaičių kartotinį. Pirmas, kad bet koks skaičius padauginus iš nulio yra nulis &amp;lt;code&amp;gt;(x * 0 = 0)&amp;lt;/code&amp;gt;. Antras, kad skaičius padaugintas iš kito skaičiaus yra lygus pirmo skaičiaus ir pirmo bei vienetu mažesnio už antrąjį sandaugos sumai &amp;lt;code&amp;gt;(x * y = x + x * (y - 1))&amp;lt;/code&amp;gt;. Taigi ir čia &amp;lt;code&amp;gt;3 * 2&amp;lt;/code&amp;gt; pirmiausiai paverčiamas į &amp;lt;code&amp;gt;3 + 3 * 1&amp;lt;/code&amp;gt;. Tada &amp;lt;code&amp;gt;3 * 1&amp;lt;/code&amp;gt; paverčiamas į &amp;lt;code&amp;gt;3 + 3 * 0&amp;lt;/code&amp;gt;. Tuomet mes žinome, kad bet kuris skaičius padaugintas iš nulio yra nulis, todėl &amp;lt;code&amp;gt;3 * 0&amp;lt;/code&amp;gt; yra 0. Kai viskas surašoma vienoje eilutėje, gauname &amp;lt;code&amp;gt;3 + 3 + 0 &amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Štai kaip viskas veikia:&lt;br /&gt;
&lt;br /&gt;
 daug(3, 2)&lt;br /&gt;
 3 + daug(3, 1)&lt;br /&gt;
 3 + 3 + daug(3, 0)&lt;br /&gt;
 3 + 3 + 0&lt;br /&gt;
 3 + 3&lt;br /&gt;
 6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;faktorialas.py&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def faktorialas(n):&lt;br /&gt;
    if n == 0:&lt;br /&gt;
        return 1&lt;br /&gt;
    if n &amp;lt; 0:&lt;br /&gt;
        return &amp;quot;Klaida, neigiami skaičiai neturi faktorialo reikšmių!!&amp;quot;&lt;br /&gt;
    return n * faktorialas(n - 1)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;2! =&amp;quot;, faktorialas(2))&lt;br /&gt;
print(&amp;quot;3! =&amp;quot;, faktorialas(3))&lt;br /&gt;
print(&amp;quot;4! =&amp;quot;, faktorialas(4))&lt;br /&gt;
print(&amp;quot;5! =&amp;quot;, faktorialas(5))&lt;br /&gt;
print(&amp;quot;-3! =&amp;quot;, faktorialas(-3))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rezultatas:&lt;br /&gt;
 &lt;br /&gt;
 2! = 2&lt;br /&gt;
 3! = 6&lt;br /&gt;
 4! = 24&lt;br /&gt;
 5! = 120&lt;br /&gt;
 -3! = Klaida, neigiami skaičiai neturi faktorialo reikšmių!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Dabar pabandyk žodį &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;(lietuviškai jei) pakeisti žodžiu &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt; (lietuviškai kol). Pamatysi, kad kompiuteris pavirto skaičiuotuvu, kuris negali suskaičiuoti iki keturių. Iš esmės &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;(kol) veikia kaip &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; (jei) ir &amp;lt;code&amp;gt;repeat&amp;lt;/code&amp;gt;(angl. pakartok) kartu sudėjus.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pratimai ===&lt;br /&gt;
1. Parašyk programą, kuri paprašytų vartotojo įvesti skaičių ir laipsnį. Naudodamas rekursija, atspausdink skaičių pakelta duotuoju laipsniu. (Pvz: 2&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;=8)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
! colspan=2 | Sprendimas &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
rezultatas = int()&lt;br /&gt;
&lt;br /&gt;
def keltiLaipsniu(skaičius, laipsnis):&lt;br /&gt;
    if laipsnis == 0:&lt;br /&gt;
        return 1&lt;br /&gt;
    return skaičius * keltiLaipsniu(skaičius, laipsnis - 1)&lt;br /&gt;
&lt;br /&gt;
rezultatas = keltiLaipsniu(2, 3)&lt;br /&gt;
&lt;br /&gt;
print(rezultatas)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Parašyk programą, kuri prašo vartotojo įvesti skaičių ir grąžina sumą nuo 1 iki to skaičiaus. Pavyzdžiui, jei įvedamas skaičius 5, programa grąžina 5 + 4 + 3 + 2 + 1 = &#039;&#039;&#039;15&#039;&#039;&#039;. Nepamiršk naudoti rekursijos.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
! colspan=2 | Sprendimas &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def suma_iki_vieno(skaičius, suma):&lt;br /&gt;
    if skaičius == 0:&lt;br /&gt;
        return suma&lt;br /&gt;
    else:&lt;br /&gt;
        return skaičius + suma_iki_vieno(skaičius - 1, suma)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
įvestas_skaičius = int(input(&amp;quot;Įvesk skaičių: &amp;quot;))&lt;br /&gt;
rezultatas = suma_iki_vieno(įvestas_skaičius, 0)&lt;br /&gt;
print (&amp;quot;Suma nuo 1 iki&amp;quot;, įvestas_skaičius, &#039;:&#039;, rezultatas)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Parašyk programą, kuri prašo vartotojo įvesti žodį ir grąžina tą žodį parašytą iš kitos pusės. Pvz “Labas” = “sabaL”. Šios užduoties sprendimui tau prireiks [[Vadovėlis/Daugiau apie sąrašus|daugiau žinių apie sąrašus]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
! colspan=2 | Sprendimas &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def apversk(žodis):&lt;br /&gt;
    if len(žodis) == 0:&lt;br /&gt;
        return žodis&lt;br /&gt;
    else:&lt;br /&gt;
        return apversk(žodis[1:]) + žodis[0]&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
įvestas_žodis = input(&amp;quot;Įvesk žodį: &amp;quot;)&lt;br /&gt;
print(apversk(įvestas_žodis))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{navigation |previous=Funkcijų apibrėžimas |next=Sąrašai}}&lt;/div&gt;</summary>
		<author><name>Mantas</name></author>
	</entry>
</feed>