我有递归的问题.我希望所有负数都替换为零.我希望递归.但出了点问题,让我失去了价值.有人可以帮帮我吗?
#include <stdio.h>
int zeros_value(int n, int tab[])
{
if (n==0) return 0;
if(tab[n-1] < 0){
tab[n-1]=0;
}
else{
return zero_value(n-1,tab);
}
Run Code Online (Sandbox Code Playgroud)
当你达到第一个负数时,递归不再继续,函数返回.您实际上不需要从函数返回任何值.你可以重写它来创建一个void函数.
#include <stdio.h>
void zero_value(int n, int tab[])
{
if (n==0) return;
if(tab[n-1] < 0) tab[n-1]=0;
zero_value(n-1,tab);
}
int main(void)
{
int tab[4] = {0,4,-9,3};
int number = 0;
int i;
zero_value(4, tab);
for(i=0;i<4;i++)
printf("%d ", tab[i]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |