1. Рекурзивне функције
• Функције могу позивати друге функције. Такође могу позивати и
саму себе. Таква могућност назива се рекурзија.
• Рекурзивни позиви функције чине програм прегледнијим, али
могу веома продужити извршавање програма, па их треба
опрезно користити.
• Код рекурзивних функција важно је одредити рекурзивну везу и
случај у коме се не врши рекурзивни позив, да би се извршавање
функције завршило.
2. Пример – Одређивање вредности степена
• #include <stdio.h>
• #include <stdlib.h>
• double stepen(double x, unsigned n)
• {
• if (n==0)
• return 1.0;
• else
• return x*stepen(x,n-1);
• }
• int main()
• {
• double a; unsigned n;
• printf("Unesi a i n n");
• scanf("%lf%u",&a,&n);
• printf("a na n je %lf", stepen(a,n));
• return 0;
• }
3. Пример – израчунавање факторијела датог природног броја
• Подсетимо се на начин дефинисања факторијела:
0!=1
n!=n*(n-1)!
• Овакав начин дефинисања упућује на рекурзију:
• Имамо случај који ће завршити извршење функције: 0!=1
• Имамо и рекурзивни позив: n!=n*(n-1)!
4. Пример – израчунавање факторијела датог природног броја
• #include <stdio.h>
• #include <stdlib.h>
• long faktorijel(unsigned n)
• {
• if (n==0)
• return 1;
• else
• return n*faktorijel(n-1);
• }
• int main()
• {
• unsigned n;
• printf("Unesite prirodan broj n");
• scanf("%u",&n);
• printf("%u!=%ld",n,faktorijel(n));
• return 0;
• }
5. Пример – Фибоначијев низ
• Фибоначијев низ се дефинише на следећи начин:
• F0 = 0, F1 = 1,
• Fn = Fn−1+Fn−2, za n>=2.
6. Одређивање н-тог члана Фибоначијевог низа
• #include <stdio.h>
• #include <stdlib.h>
• long fibonaci(unsigned n)
• {
• if ((n==0)||(n==1))
• return n;
• else
• return fibonaci(n-1)+fibonaci(n-2);
• }
• int main()
• {
• unsigned n;
• printf("Unesite redni broj clana Fibonacijevog niza n");
• scanf("%u",&n);
• printf("F(%u)=%ld",n,fibonaci(n));
• return 0;
• }