C++的递归实现数组中的前n个元素实现倒序输出的问题

请问以下程序有什么问题

 #include <iostream>
using namespace std;
void fun(int str1[], int a);
int main()
{
    int str[101];
    for(int i=0;i<=101;)
    {
        str[i] = i-1;
    }
    int n;
    cin >> n;
    fun(str, n);
    return 0;
}
void fun(int str1[101], int a)
{
    if(a<0)
    {
        return;
    }
    else
    {
        cout << str1[a];


        return fun(str[101], --a);
    }
}

main函数中的for循环i没有自增,跳不出来

#include <iostream>
using namespace std;
void fun(int str1[], int a);
int main()
{
    int str[101];
//    for(int i=0;i<=101;)    //数组越界 + 死循环
    for(int i=0;i<101;i++)
    {
        if(i == 101)
        {
            int a = 0;
        }
        str[i] = i-1;
    }
    int n;
    cin >> n;
    fun(str, n);
    return 0;
}
void fun(int str1[101], int a)
{
    if(a<0)
    {
        return;
    }
    else
    {
        cout << str1[a];
//      return fun(str[101], --a);
        return fun(str1, --a);    //问题2
    }
}

#if 1
#include
using namespace std;
void fun(int str1[], int a);
int main()
{
int str[10];
//少了i++,导致死循环
//for (int i = 0; i <= 101;)
//for (int i = 0; i <= 10; ++i)
for (int i = 0; i < 10; ++i)
{
str[i] = i;
}
int n;
cin >> n;
fun(str, n);
return 0;
}
void fun(int str1[101], int a)
{
if (a<=0)
{
return;
}
else
{
//cout << str1[a];
cout << str1[a - 1];

    //return fun(str[101], --a);
    return fun(str1, --a);
}

}
#endif

这是我的代码,附上截图:
图片说明

我把数组元素个数改小了,但是不会影响结果...