我有以下源代码,您将在下面找到它。我很难理解如何在trimesh_clustering.cpp
函数中交换最后两行,并打印出与数组相反的顺序。
有问题的行:
printArray
有人可以向我解释这个。
printf("%d", arr[n-1]);
printArray(n-1, arr);
答案 0 :(得分:2)
让我们一起来看看。
您从printArray
致电main
,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] );
...
等。这次我们按正常顺序打印出数组。