因此,我对编码非常陌生,如果我的代码让您畏缩,我会事先道歉。我有一个编码作业,编写了一个使用递归函数以所有大写字母显示c_string的程序。当运行我的代码时,我输出“ A”,然后堆栈溢出,我也不知道为什么。请协助我,以帮助我了解我的代码哪里出了问题。另外,如果您对我应该如何针对此问题进行不同的编码有任何建议,请告诉我!
我尝试使用for循环进行更改,但我正在在线阅读其迭代功能,并且不适用于递归。
#include <iostream>
#include <ctype.h>
using namespace std;
void showInUpper(char alphabet[], int i);
int main()
{
char alphabet[27]{ "abcdefghijklmnopqrstuvwxyz" };
int i = 0;
showInUpper(alphabet, i);
cout << endl << endl;
}
void showInUpper(char alphabet[], int i)
{
if (alphabet[i] == '\0')
{
return;
}
else if (alphabet[i] != toupper(alphabet[i]))
{
alphabet[i] = toupper(alphabet[i]);
cout << alphabet[i] << '\t';
}
showInUpper(alphabet, i++);
}
因此,预期结果应如下所示。
ABCDEFGHIJKLMNOPQRSTUVWZXYZ
答案 0 :(得分:2)
您将i
的相同值传递给showInUpper
的每次调用,因为i
直到传递给函数后才会递增。结果,您将无休止地递归。
使用预增量运算符代替:
showInUpper(alphabet, ++i);
以使i
在传递之前先递增。