printBackward递归不';使用运算符+时,不打印数组的第一个元素+;

printBackward递归不';使用运算符+时,不打印数组的第一个元素+;,c,arrays,recursion,C,Arrays,Recursion,我想向后打印一个整数数组,并检测当使用++而不是“startPos+1”时,结果会丢失数组的第一个元素。我通过调试来理解这个问题,但是递归的工作原理非常奇怪。你能解释一下问题是什么吗?多谢各位 #include <stdio.h> #define SIZE 10 void printBackward(const int[], const int size, int startPosition); int main(void) { const int a[SIZE] = {

我想向后打印一个整数数组,并检测当使用++而不是“startPos+1”时,结果会丢失数组的第一个元素。我通过调试来理解这个问题,但是递归的工作原理非常奇怪。你能解释一下问题是什么吗?多谢各位

#include <stdio.h>
#define SIZE 10

void printBackward(const int[], const int size, int startPosition);

int main(void)
{
    const int a[SIZE] = {1,3,5,7,9,10,13,15,17,19};
    printBackward(a,SIZE,0);
    puts("");
}
void printBackward(const int a[SIZE], const int size, int startPos)
{
    if(startPos < size)
    {
        printBackward(a,size,++startPos); // work wrongly with ++startPos
                //printBackward(a,size,startPos + 1); // work properly
        printf_s("%4d",a[startPos]);
    }
}
#包括
#定义尺寸10
void printfackup(常量int[],常量int size,int startPosition);
内部主(空)
{
常数int a[SIZE]={1,3,5,7,9,10,13,15,17,19};
反向打印(a,大小,0);
认沽权(“”);
}
void printfackup(常量int a[SIZE],常量int SIZE,int startPos)
{
如果(开始时间<大小)
{
printBackward(a,大小,++startPos);//错误地使用++startPos
//向后打印(a、大小、startPos+1);//工作正常
printf_s(“%4d”,a[startPos]);
}
}

向函数传递
startPos+1
不会更改
startPos
的值。但是,
++startPos
实际上增加了
startPos
的值。两者不能互换。

startPos+1
传递到函数不会更改
startPos
的值。但是,
++startPos
实际上增加了
startPos
的值。两者不能互换。

startPos+1
传递到函数不会更改
startPos
的值。但是,
++startPos
实际上增加了
startPos
的值。两者不能互换。

startPos+1
传递到函数不会更改
startPos
的值。但是,
++startPos
实际上增加了
startPos
的值。两者不能互换。

使用
startPos++
instead@RedAlert这将导致无限递归。使用
startPos++
instead@RedAlert这将导致无限递归。使用
startPos++
instead@RedAlert这将导致无限递归。使用
startPos++
instead@RedAlert那会导致无限递归。