[英]Printing array in reverse order
我有以下源代碼,您將在下面找到。 我很難理解如何將printArray
函數中的最后兩行與打印數組的相反順序互換。
有問題的行:
printf("%d", arr[n-1]);
printArray(n-1, arr);
是否有人可以向我解釋這一點。
#include <stdio.h>
void printArray(int n, int arr[]);
int main(void){
int array[7]= {1,2,3,4,5,6,7}, n=7;
printArray(n, x);
return 0;
}
void printArray(int n, int arr[]){
if( n==1){
printf("%d", arr[0])
}
else {
printf("%d", arr[n-1]);
printArray(n-1, arr);
}
}
讓我們來看看吧。
您從main
調用printArray
, n
等於 7。
printArray
函數將7
與1
進行比較; 它們不相等,所以它打印arr[6]
,然后調用printArray( 6, arr )
。
在下一次調用中, printArray
將6
與1
進行比較:它們不相等,因此它打印arr[5]
,然后調用printArray( 5, arr )
。
等等。 壓縮它,我們得到:
printArray( 5, array ):
printf( "%d", arr[4] );
printArray( 4, arr ):
printf( "%d", arr[3] );
printArray( 3, arr ):
printf( "%d", arr[2] );
printArray( 2, arr ):
...
等等。 最終,當n
為 1 時, printArray
打印arr[0]
並且我們一路返回調用鏈。 因此,數組的元素以相反的順序打印出來(數組本身不受影響)。
如果您顛倒調用順序
printArray( n-1, arr );
printf( "%d", arr[n-1] );
那么調用鏈如下所示:
printArray( 5, arr ):
printArray( 4, arr ):
printArray( 3, arr ):
printArray( 2, arr ):
printArray( 1, arr ):
printf( "%d", array[0] );
printf( "%d", array[1] );
printf( "%d", array[2] );
...
等等。這次我們按正常順序打印出數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.