递归地在数组元素处取零值c

fuw*_*iak -2 c c++ recursion

我有递归的问题.我希望所有负数都替换为零.我希望递归.但出了点问题,让我失去了价值.有人可以帮帮我吗?

#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)

usr*_*usr 9

当你达到第一个负数时,递归不再继续,函数返回.您实际上不需要从函数返回任何值.你可以重写它来创建一个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)