2014-03-25 18 views
0

我想向後打印一個整數數組,並檢測到使用++而不是「startPos + 1」結果時會失去數組的第一個元素。我調試瞭解這個問題,但遞歸工作很奇怪。你能解釋一下問題是什麼嗎?非常感謝你。printBackward遞歸不使用operator ++打印數組的第一個元素

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

使用'startPos ++'代替 –

+0

@RedAlert這將導致無限遞歸。 – interjay

回答

3

傳遞startPos + 1的功能不改變的startPos值。但是,++startPos實際上會增加startPos的值。這兩者不可互換。

相關問題