第一次用戶在這裏,希望我沒有錯過任何類似的問題到這個。遞歸函數,根據步數,給出不同的答案
我遇到的問題是,我們應該編寫代碼,將使用遞歸函數來獲取數組(array1 [n]),然後創建第二個數組(array2 [n]),其中array2的成員將是第一個數組中所有留給他們的元素的總和,它們是正數。 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)。 –