问题描述
- 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
解决方案五:
我把数组元素个数改小了,但是不会影响结果...
时间: 2024-11-30 21:33:59