gpt4 book ai didi

c - 递归函数根据步数给出不同的答案

转载 作者:行者123 更新时间:2023-11-30 15:02:55 26 4
gpt4 key购买 nike

第一次使用这里,希望我没有错过任何与此类似的问题。

我遇到的问题是,我们应该编写代码,使用递归函数来获取数组(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;
}

最佳答案

试试这个:

#include <stdio.h>

int sum(int array[],int tmp){
if(tmp<0)
return 0;
else
return array[tmp] + sum(array, tmp-1);
}

int main(void){
int n;

scanf("%d",&n);
int a[n], b[n+1], i, j;

for(i = 0; i < n; i++){
scanf("%d", &a[i]);
if(a[i] < 0)
a[i] = 0;
}

b[0] = 0;
for(i = 0; i < n; ++i){
b[i+1] = sum(a, i);
}

for(i = 0; i <= n; i++){
printf("%d ", b[i]);
}
puts("");
return 0;
}

关于c - 递归函数根据步数给出不同的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40921405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com