我想寫一個函數來通過遞歸來打印數組。在C++中通過遞歸打印數組
我寫了三個函數,但它們在原理上似乎是一樣的。
void printArray0(int theArray[], int theSize, int theIndex = 0)
{
cout << theArray[theIndex] << ' ';
if (++theIndex != theSize) printArray0(theArray, theSize, theIndex);
else cout << endl;
}
void printArray1(int theArray[], int theElementLeft)
{
cout << *theArray << ' ';
if (theElementLeft != 1) printArray1(theArray+1, theElementLeft-1);
else cout << endl;
}
void printArray2(int theArray[], int theSize)
{
static int myIndex = 0;
cout << theArray[myIndex] << ' ';
if (++myIndex != theSize) printArray2(theArray, theSize);
else cout << endl;
}
那麼它們之間是否存在顯着差異?
如果有,哪個功能最快,哪個最安全?
我希望能夠從別人的經驗:)
我從來沒有過這樣的經歷:) – neagoegab 2013-04-10 14:21:02
誰知道陰影中潛伏着什麼代碼?只有探查者知道! – 2013-04-10 14:21:07
當給定的大小爲0時,所有三個都將失敗。 – interjay 2013-04-10 14:21:33