c - 如何使用递归打印两个数组,一个接一个(即不同时)?

标签 c arrays recursion

我的代码发布如下,目前打印出“1,6,2,7,3,8,4,9,5,10,DONE”,换句话说,它遍历并打印出第一个数组第一个元素,然后是第二个数组,第一个元素,然后是第一个数组,第二个,第二个数组,第二个,依此类推(对不起,句子连续)。我想要“1,2,3,4,5,6,7,8,9,10,DONE”的输出,以便第一个数组被完全打印出来,然后第二个数组也被打印出来,然后 DONE 被打印出来。 请在此函数中保持递归(我试图了解递归调用函数的基础知识):

#include <stdio.h>
#define N 5
void printcombo(int* a, int* b)
{
    int first,second;
    first = *a;
    second = *b;    
    if (first != 0 && second !=0)
    {
        printf("%d,",first);
        printf("%d,",second);
        printcombo(a+1,b+1);
    }
    else
    {
        printf("DONE\n");
    }

 }


int main()
{
    int a[N] = {1,2,3,4,5};
    int b[N] = {6,7,8,9,10};
    printcombo(a,b);
    return 0;
}

如果只更改一小部分代码,我将不胜感激,但很明显,请执行您必须执行的操作。

最佳答案

这是一种变体:

#include <stdio.h>
#define N 6

void printcombo(int* a, int* b)
{
    int first,second;
    first = *a;
    second = *b;
    if (first != 0) {
        printf("%d ", first);
        printcombo(a+1,b);
    } else if (second != 0) {
        printf("%d ", second);
        printcombo(a,b+1);
    } else {
        printf("DONE\n");
    }
 }


int main()
{
    int a[N] = {1,2,3,4,5,0};
    int b[N] = {6,7,8,9,10,0};
    printcombo(a,b);
    return 0;
}

关于c - 如何使用递归打印两个数组,一个接一个(即不同时)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20276111/

相关文章:

c - C 函数中的 SIGSEGV

python - 循环遍历所有嵌套的字典值?

c++ - 使用递归打印节号

c - 如何从 C 代码发出 R 异常信号

c - 这种线路分离有何不同?

c - ShellExecute 返回成功但未创建文件

Python - 将坐标写入数组

javascript - 如何将类型数组猴子补丁到 ECMAScript 3 JavaScript 中,特别是 Uint8Array? (Adobe ESTK 中 IDE 必需品)

java - java UML图

c - 如何集成前缀检查器以根据读取的文件查找完整的单词