Funkcje rekurencyjne

0

Witam ponownie. Mam pytanie co do funkcji rekurencyjnych(funkcja , która wywołuje samą siebie - wedługi info z netu). Czy jeśli używam pętle jak w tym programiku, który stworzyłem poniżej:

list = [8,2,9,12,9,10,25,7]
start = 0

def figures(a,start,position):

    for x in a:
        if x == position:
            print(f'Find on position on: {start}')
        else:
            if start == len(list)-1:
                print(f"Don't find any figure in set")
        start +=1

while True:
    figures(list,start,position= int(input("Give a figure: ")))

To są funkcje rekurencyjne jeszcze? Z tego co wyczytałem , to funkcje te muszą być niby bez pęli w programie same if ... ? , i z tego co wyczytałem funkcje rekurencyjne pobierają dużo niby pamięci itp... Czy te funkcje rekurencyjne są często stosowane w programowaniu, należy je stosować, czy unikać w programowaniu? I jak to wpływa na samo działanie, jeśli w danym programie nie użyje funkcji rekurencyjnych.... ?

3

Nie ma tym żadnej rekurencji. Rekurencja jest wtedy jakby w wewnątrz funkcji figures była wywołana ta sama funkcja z innymi parametrami. Musi tez być zdefiniowany warunek wyjścia. Czyli kiedy funkcja przestaje wywoływać sama siebie.

4

Skoro te funkcje nie wywołują samych siebie to nie są rekurencyjne, a to czy w funkcji jest pętla czy nie, nie ma znaczenia (funkcja musi tylko wywoływać samą siebie).
https://www.geeksforgeeks.org/recursion-in-python/

Tak, zabierają więcej pamięci niż (robiąca to samo) iteracja, gdyż ta pierwsza "updajtuje" tylko zmienna imperatywną, a funkcja rekurencyjna za każdym wywołaniem, rezerwuje kolejną ramke stosu (na samą siebie). Czy stosować? Tam gdzie trzeba, np., w rekurencyjnych strukturach danych.
https://en.wikipedia.org/wiki/Recursion_%28computer_science%29
https://sicp.sourceacademy.org/chapters/1.2.1.html

0

Dzięki wszystkim za wytłumaczenie, informację :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1