rekurzio.py
1    print('-----------------------------------------------------------------')
2    print('Iteratív és rekurzív algoritmusok')
3    print('-----------------------------------------------------------------')
4    
5    
6    def R_osszeg(n, lista):  # rekurzív megoldás
7        if n > 0:
8            return R_osszeg(n - 1, lista) + lista[n - 1]
9        else:
10           return 0
11   
12   
13   def osszeg(lista):  # iteratív megoldás
14       sum = 0
15       for i in range(len(lista)):
16           sum += lista[i]
17       return sum
18   
19   
20   # -----------------------------------------------------------
21   def R_faktoriális(n):  # rekurzív megoldás
22       if n > 1:
23           return n * R_faktoriális(n - 1)
24       else:
25           return 1
26   
27   
28   def Faktoriális(n):  # iteratív megoldás
29       F = 1
30       for i in range(1, n + 1):
31           F = F * i
32       return F
33   
34   
35   # -----------------------------------------------------------    
36   def R_Fibonacci(n):  # rekurzív megoldás
37       if n == 0:
38           return 0
39       if n == 1:
40           return 1
41       if n > 1:
42           return R_Fibonacci(n - 1) + R_Fibonacci(n - 2)
43   
44   
45   def Fibonacci(n):  # iteratív megoldás
46       F = 0;
47       elozo = 1;
48       for i in range(n):
49           kovetkezo = F + elozo;
50           elozo = F;
51           F = kovetkezo;
52       return F;
53   
54   
55   # -----------------------------------------------------------
56   lst = [2, 4, 6, 8]
57   print('Összegzés - lista elemei: ', lst)
58   print('"Normál" összegzés eredménye: ', osszeg(lst))
59   print('Rekurzív összegzés eredménye: ', R_osszeg(len(lst), lst))
60   
61   print('-----------------------------------------------------------------')
62   print('"Normál" faktoriális számítás: ', Faktoriális(int(input('n faktoriális, n='))))
63   print('Rekurzív faktoriális számítás: ', R_faktoriális(int(input('n faktoriális, n='))))
64   
65   print('-----------------------------------------------------------------')
66   print('"Normál" Fibonacci-számok.. : ', [Fibonacci(i) for i in range(int(input('n Fibonacci-szám, n=')))])
67   print('"Rekurzív" Fibonacci-számok : ', [R_Fibonacci(i) for i in range(int(input('n Fibonacci-szám, n=')))])