1. ## recursive ?

Given this snippet i know it sets the first element of the array A to zero but what about the rest of the arrays dont they increase while the size decrements untilz size is 0?

Code:
```void Mystery (int A[ ], int size)
{
if (size > 0){A[0] = 0; Mystery (A+1, size -1);}
}```

2. a[0] will indeed only set the first element. You need either a variable in the brackets or some other numbers as well (and sometimes even some math inside like "ImageData[Row*TotalColumns+Column] = 5;").

3. It's just setting each element in the array to 0. Trace it all on paper.

Assuming the call is something like this:

Code:
```int array[10];

...

Mystery(array,10);```
First few iterations you'll have this:

Code:
```Mystery is called: A points at array[0], size = 10
(size > 0) is true.
A[0] = 0;  This means array[0] = 0 in main()
Mystery is then called with A + 1 and size - 1.```
Code:
```Mystery is called: A points to array[1], size = 9
(size > 0) is true
A[0] = 0;  array[1] = 0 in main()
Mystery is then called with A + 1 and size - 1```
Code:
```Mystery is called: A points to array[2], size = 8
(size > 0) is true
A[0] = 0; array[2] = 0 in main()
Mystery is then called with A + 1 and size - 1```
A is just really a pointer. It's not really an array, although it can behave just like one in many ways. It's important to realize that just because A[0] is set to 0, doesn't mean that array[0] is what will be changed.

4. Thanks you guys shood be c professors your make me understand better than my instructors

5. Maybe they are C professors?

Also if your going to post 3 topics simultaneously, consider one posting them in one topic?