Тема: Рекурсія
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
int result;
int rec(int);
int loop();
const int n = 10;
int a[n];
int main()
{
char q; int r = 0;
do
{
srand(time(0));
for (int i = 0; i < n; i++) a[i] = (rand() % 10) - 3;
for (int i = 0; i < n; i++) cout << a[i] << " ";
cout << endl;
cout << " - rec -" << endl;
cout << rec(0) << "\n\n";
cout << " - loop -" << endl;
cout << loop() << endl;
//res(0) = 0; або res(0) = r; - не пропускає...
cin >> q;
system("cls");
} while (q != 'q');
return 0;
}
int loop()
{
int sum = 0, i = 0;
while (a[i]>=0)
{
sum = sum + a[i];
i++;
}
return sum;
}
int rec(int k)
{
if ((k > n) || a[k] < 0) return result;
if (a[k] >= 0) result = result + a[k];
return rec(k+1);
}
При повторному запуску програми(якщо ввожу будь-який символ, крім q) рекурсивна функція зберігає в собі попереднє значення, чи можна якось обнулити рекурсивну функцію ?