You are on page 1of 24

-

( 102)


&

(1)

( )
.
,
21 20 10 8 4 5 ,
21 20 8 10 -1 4 5 10
5+4+(-1)


( ) (
),

(2)
1:
(for, while)
(global) (static)
2: 2 ,

3: ,
(, 1-6 )


( ).
,

(3)


( )

(4)

:

(5)
1

void largerThanAllNext(int* numsVector, int pos, int* sum ) {


if (pos > 0) {
if (numsVector[pos-1] > *sum) {
printf("\nElement: %d at pos: %d satisfies the condition",numsVector[pos-1], pos-1 );

} else {
(*sum) += numsVector[pos - 1];
largerThanAllNext(numsVector, --pos, sum);
}
} else {
printf("There is no such element\n");
}
}

(6)
2

void largerThanAllNext(int* numsVector, int pos, int sum ) {


if (pos >= 0) {
if (numsVector[pos] > sum) {
printf("\nElement: %d at pos: %d satisfies the condition",numsVector[pos], pos);

} else {
largerThanAllNext(numsVector, pos - 1, sum + numsVector[pos]);
}
} else {
printf("There is no such element\n");
}
}

(7)
3

void largerThanAllNext(int* numsVector, int pos, int N, int sum ) {


if (pos < 0) {
printf("There is no such element\n");
return;
}
if ((pos != N-1) && (numsVector[pos] > sum) )
printf("\nElement: %d at pos: %d satisfies the condition",numsVector[pos], pos);

else
largerThanAllNext(numsVector, pos - 1, N, sum + numsVector[pos]);
}

(8)
1:

/* numsVector: */
/* nums: */
int sum = numsVector[nums-1];
largerThanAllNext( numsVector, nums-1, &sum)

2:
/* numsVector: */
/* nums: */
largerThanAllNext(numsVector, nums - 2, numsVector[nums - 1]);

3:
/* numsVector: */
/* nums: */
largerThanAllNext(numsVector, nums 1, nums, 0);

(1)



(
0, )
,
.
.
, 5 4 6 15 25 46
5*6*25=750 4*15*46=2760


2 ,

(2)
1:
(for, while)
(global) (static)
2: , (,

2-4 )
.

( ).
,

(3)






,

(4)

:

(5)






,

(6)

int maxOddOrEven(struct node *p, int odd, int even, int counter) {
if (p == NULL) {
printf("\nEvent product is: %d, Odd product is:%d\n", even, odd);
return (odd > even) ? odd : even;
}
if (counter % 2 == 0)
even *= p->value;
else
odd *= p->value;
return maxOddOrEven(p->next, odd, even, counter + 1);
}

(7)

int maxOddOrEven(struct node *p, int odd, int even) {


if (p != NULL) {
even *= p->value;
if (p->next != NULL) {
odd *= p->next->value;
return maxOddOrEven(p->next->next, odd, even);
} else {
printf("\nEven product is: %d, Odd product is:%d\n", even, odd);
return (odd > even) ? odd : even;
}
} else {
printf("\nEvent product is: %d, Odd product is:%d\n", even, odd);
return (odd > even) ? odd : even;
}
}

(7)
1
/* head: */
int max;
max = maxOddOrEven(head, 1, 1, 0);
printf( "\nThe max product is: %d\n", max);

2
/* head: */
int max;
max = maxOddOrEven(head, 1, 1);
printf( "\nThe max product is: %d\n", max);

(1)


2 ( )
( ). ,
2 5 8 10 80 3 8,10, 80,
8*10=80.
:
,

,
(
2)

(2)
1:
(for, while)
(global) (static) .

2: ,
(, 1-6 )
.

( ).
,

(3)



( )


(4)

:

(5)

int checkThreeNums(int *arr, int i, int nums) {


if (i >= nums-2) {
printf("Den bre8hke triada\n");
return -1;
}
if (arr[i] * arr[i+1] == arr[i+2]) {
printf("Nums are: %d * %d = %d\n", arr[i], arr[i+1], arr[i+2]);
return i;
}
return checkThreeNums(arr, i+1, nums);
}

(6)
:
/* numsVector: */
/* nums: */
checkThreeNums(numsVector, 0, nums);

You might also like