printBackward递归不';使用运算符+时,不打印数组的第一个元素+;
我想向后打印一个整数数组,并检测当使用++而不是“startPos+1”时,结果会丢失数组的第一个元素。我通过调试来理解这个问题,但是递归的工作原理非常奇怪。你能解释一下问题是什么吗?多谢各位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] = {
#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那会导致无限递归。