Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Rekurzívny funkcie sa nazývajú ako súčasť ich definície . Napríklad :
>>> def faktor ( x ) :
. . . faktor ( x )
Táto funkcia bude naďalej nazývať , kým systém už nemôže pojať množstvo funkcií hovory ( volanie funkcie sú umiestnené v pamäti , rovnako ako akékoľvek iné údaje ) . Avšak , to zjednodušuje , ako rekurzívne funkcie pracuje koncepčne : funkcie ( faktor ) sa nazýva ( faktor ( x ) ) v rámci svojej definície
základné veci
. rekurzívne funkcie musí mať to , čo by sa dalo nazvať " základné prípady " , alebo podmienky , ktoré hovoria , že funkcia zastaviť jeho rekurziu . To by mohlo byť akákoľvek podmienka , že funkcia môže mať spokojný ako súčasť svojej činnosti . Ako klasický príklad , faktoriál funkcia zistí faktoriál čísla n ( n! , alebo n * n-1 * n - 2 ... 0 ) . Takže faktoriál 3 by sa počítať s 3 * 2 * 1 = 6. Programátor môže použiť číslo 0 ako základný prípade tejto funkcie :
>>> if x == 0 :
. . . návrat 1
Rekurzia
funkcie pre výpočet faktoriálu má teraz základné veci ( x == 0 ) , potom rekurzia sa zastaví na tomto stave . Tak , to by bolo len otázkou použitie rekurzia vykonať faktoriálu operáciu :
>>> inde :
. . . návrat x * faktor ( x - 1 )
Ak x nie je rovné 0 , potom rekurzia začne /pokračovať . Príkaz return zavolá " faktor " a čakať . Každý nový volanie funkcie bude robiť to isté , volanie a čakať , až na posledné volanie funkcie (ak x == 0 ) vráti 1. Potom sa každý predchádzajúci hovor ukončíte príkaz return ( vynásobte vrátenú hodnotu z " faktora " od x ) , kým sa vrátil faktoriál .
ClipArt Python rekurzia
rekurzia v akýkoľvek jazyk môže skončiť v nekonečnej slučke : To znamená , rekurzívne štruktúru , ktorá nikdy nekončí , kým sa systém zastaví ju z dôvodu nedostatku finančných prostriedkov . Python sa zastaví tento " nekonečný " rekurziu na 1000 hovorov ( takže funkcia môže volať seba v 1000 inštancie dlhú rekurzívne reťazca pred Python zastaví proces ) . Programátor môže túto hodnotu zmeniť pomocou systémových knižníc , ako je tento príklad :
>>> import sys
>>> sys.setrecursionlimit ( 2000 )
Avšak , v tomto bode programátori mohli pýtať sami seba , či rekurzia je najlepšie riešenie problému .