c++ - 使用递归 C 替换数组中的所有负值

标签 c++ c recursion

我想用零替换所有负值(递归地)。我已经使用C和递归。这是我的家庭作业。

期望的输出: 0 4 0 3

我得到了什么:

0 4 -9 3

我的代码:

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

}

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;
}

最佳答案

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

关于c++ - 使用递归 C 替换数组中的所有负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34752319/

相关文章:

c - c 中字节的缩写(Unix 相关)

javascript - 为什么这个递归函数返回未定义?

c++ - 用于模板函数特化的 Enable_if

c++ - 我需要相互包含两个头文件而不使用前向声明导致出现 "incomplete type"错误

c++ - 从多维数组返回一个数组

c++ - 线程间的线程安全通信

我可以在/dev/spidev 文件描述符上选择()吗?

c - 从整数中提取特定位并将它们保存到 C 中的字符串中?

java - 包含 "bab"的 boolean 函数

带有 Integer 对象的 Java 递归方法 StackOverflowError