первый пользователь здесь, надеюсь, что я не пропустил подобных вопросов к этому.Рекурсивная функция, в зависимости от количества шагов, дает разные ответы
Проблема, с которой я столкнулась, состоит в том, что мы должны написать код, который будет использовать рекурсивную функцию для принятия массива (array1 [n]), а затем создать второй массив (array2 [n]), в котором члены массива2 будут суммой всех оставшихся для них элементов в первом массиве, которые являются положительными. array2 [0] должно быть = 0, array2 [1] = array1 [0], array2 [2] = array1 [0] + array1 [1], ....
Проблема в том, что я продолжаю пытаться подумайте об алгоритме, но я продолжаю возвращаться к тому же коду, и я не менее тупой, чем раньше. Я подумал о нескольких способах изменения рекурсии, чтобы исправить это, но это только усилило его.
#include <stdio.h>
int sum(int array[], int tmp)
{
if(tmp < 0)
return 0;
else
return array[tmp] + sum(array, tmp-1);
}
int main()
{
int n;
scanf("%d",&n);
int a[n], b[n], i, j;
for(i = 0; i < n; i++)
{
scanf("%d",&a[i]);
if(a[i] < 0)
a[i] = 0;
}
b[0]=0;
for(i=n-1;i>0;i--)
{
int sum1 = 0;
for(j = i - 1; j >= 0; j--)
sum1 += sum(a,j);
b[i] = sum1;
}
for(i = 0; i < n; i++)
{
printf("%d ",b[i]);
}
return 0;
}
Пожалуйста [форматировать Ваш код правильно] (// prohackr112.tk/r/proper-c-formatting). –