1

Тема: Рекурсія

#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) рекурсивна функція зберігає в собі попереднє значення, чи можна якось обнулити рекурсивну функцію ?

2 Востаннє редагувалося vitalii97 (26.03.2016 13:01:39)

Re: Рекурсія

Упс, вибачаюсь, вже розібрався)