Int a()
{.....a().....}
Непрямою рекурсією є рекурсія, що здійснює рекурсивний виклик функції за допомогою ланцюжка виклику інших функцій. Всі функції, що входять в ланцюжок, теж вважаються рекурсивними.
приклад:
a(){.....b().....} b(){.....c().....} c(){.....a().....} .Всі функції а,b,c є рекурсивними, оскільки при виклику однієї з них, здійснюється виклик інших і самій себе.
Всі функції в мові Сі можуть бути рекурсивними, тобто будь-яка з них може непрямо викликати саму себе.
/* Програма обчислення факторіала */
/* n!=1*2*3*...*(n-1)*n */
#include <iostream.h>
unsigned long F(unsigned long n);
main()
{ unsigned long n,fac;
сout<<"\n Введіть N=";
cin>>n;
fac=F(N);
cout<<“\n N!="<<fac);
}
unsigned long F(unsigned n);
{
return n==1?1:n*F(n-1); }
Приклад: Скласти функцію для обчислення n!, де використовуючи рекурсію, можна так:
Long factorial (int n)
{
Long fact;
If (n>1) fact=n*factorial(n-1);
else fact=1;
return fact;
}
П р и к л а д: Рекурсивна функція обчислення суми цілих чисел від а до b має вигляд:
Int Suma (int a, int b)
{
Int S;
If (a==b) S=a;
else S=b+Suma(a,b-1);
return S;
}
Тема. Класи пам’яті . Локальні та глобальні змінні. Шаблони функцій.
План
1. Класи пам’яті.
2. Локальні та глобальні змінні
3. Шаблони функцій
1. Класи пам’яті.
Для того, щоб безпосередньо вказати комп’ютеру як і де у його пам’яті мають зюерігатися значення змінних чи функцій, як можна отримати доступ до цих даних, як визначити область видимості цих даних, використовують специфікатори класу пам’яті. Є п’ять спецтфікаторів:
· Auto
· Regicter
· Static
· Extern
· Volatile
Дія цих специфікаторів.
Auto – застосовується для локальних змінних по замовчуванню.
Область видимості – обмежена блоком, в якому вони оголошені.
Register – вказує компілятору, що значення слід зберігати в регістрах процесора (не в оперативній пам’яті). Це зменшує час доступу до змінної, що прискорює виконання програми
Область видимості – обмежена блоком, в якому вони оголошені.
Static – застосовується як для локальних, так і для глобальних змінних.
Область видимості – значення локальної статичної змінної зберігається після виходу з блока чи функції, де ця змінна оголошена. Під час повторного виклику функції змінна зберігає своє попереднє значення. Якщо змінна явно не ініцілізована, то за замовчуванням надається значення 0.їй
Дата добавления: 2015-08-26; просмотров: 475;