int fun(int str[]) {
if(n==0) { return 0; }
else {
cout << str[n];
--n;
return fun(str); // 返回值無意義,且修改全局 n 破壞封裝
}
}
n 導致函數不可復用、非線程安全。int 無實際用途,應改為 void。void printReverse(int arr[], int n) {
if (n <= 0) return; // 基線條件
cout << arr[n-1] << ' '; // 輸出當前元素(下標 n-1)
printReverse(arr, n-1); // 遞歸處理剩餘元素
}
調用示例:printReverse(str, n); // n 為需輸出的元素個數
上述遞歸屬於尾遞歸,編譯器優化後等價於迭代:
void printReverseIterative(int arr[], int n) {
while (n > 0) {
cout << arr[--n] << ' ';
}
#include
using namespace std;
void printReverse(int arr[], int n) {
if (n <= 0) return;
cout << arr[n-1] << ' ';
printReverse(arr, n-1);
}
int main() {
int arr[101];
for (int i = 0; i <= 100; ++i) arr[i] = i;
int n;
cout << "輸入 N (1-101): ";
cin >> n;
if (n > 0 && n <= 101) printReverse(arr, n);
return 0;
}