我正在创建一个程序(其功能必须是递归的),它接受来自用户的一系列字符,以句点结束,并在屏幕上向后显示字符。样本运行应该给出:
Enter a character: H
Enter a character: i
Enter a character: .
iH
我创建了一个函数来反转一个数组,该数组采用字符数组及其大小作为参数。
void print_backwards(char a[], int size){
int i = size-1;
cout << a[i];
i--;
if(i >= 0){
print_backwards(a, i);
}
}
但是,我有一个问题,即使用递归初始化字符数组。我该如何解决这个问题?
答案 0 :(得分:1)
这听起来像是一个家庭作业问题,所以我不打算为你解决问题。但是,我可以帮你推动正确的方向。
创建一个通过引用和偏移量获取字符数组的函数 在函数的第一次调用时,给它一个零偏移量并将其传递给空数组。
函数本身应该读取用户的单个字符
如果字符是.
,则将空字节写入当前位置并返回当前偏移量,否则,将提供的字符写入当前位置,然后使用偏移量+ 1再次调用该函数。
该函数将返回输入的长度。
函数体看起来像
// Get character from user
if ( c == '.' ) {
input[offset] = '\0';
return offset;
} else {
input[offset] = c;
return thisFunction(input, offset+1);
}