Oblicz rekurencyjnie sumę liczb należących do n-elementowego ciągu wygenerowanego losowo, spełniających warunek, że są większe niż element poprzedni w kolejności. Odpowiedź w języku C



Odpowiedź :

Rekah4

Odpowiedź:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int sum (int arr[], int n)

{

   return   ( arr[n] > arr[n-1] ? arr[n]: 0)

          + (      n > 0 ? sum(arr, n-1) : 0);

}

int main() {

   srand(time(NULL));

   int n = rand() % 10 + 1;

   int sequence[n];

   printf("Ciąg : ");

   for (int i = 0; i < n; i++) {

       sequence[i] = rand() % 10 + 1;

       printf("%d ",sequence[i]);

   }

   printf("\n");

   printf("Suma rosnących elementów: %d\n",sum(sequence,n -1));

   return 0;

}

Przykłady:

Ciąg : 10 8 2 1 7

Suma rosnących elementów: 7

//bo 10<8 ? nie, 8<2 ? nie , 2 <1 ? nie, 1 < 7 ? tak

Ciąg : 3 5 4 3 1

Suma rosnących elementów: 5

//bo 3<5?tak 5 <4? nie 4<3?nie 3<1 ?nie

Ciąg : 1 8 1 10 7 10

Suma rosnących elementów: 28

//bo 1<8?t 8<1?n 1<10?t 10<7?n 7<10?t

//8 + 10 + 10 = 28

Mam nadzieje, że chodziło o takie coś.