通过递归创建一个字符数组(用户输入)

时间:2015-05-15 14:45:52

标签: c++ arrays recursion

我正在创建一个程序(其功能必须是递归的),它接受来自用户的一系列字符,以句点结束,并在屏幕上向后显示字符。样本运行应该给出:

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);
    }
}

但是,我有一个问题,即使用递归初始化字符数组。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这听起来像是一个家庭作业问题,所以我不打算为你解决问题。但是,我可以帮你推动正确的方向。

创建一个通过引用和偏移量获取字符数组的函数 在函数的第一次调用时,给它一个零偏移量并将其传递给空数组。

函数本身应该读取用户的单个字符 如果字符是.,则将空字节写入当前位置并返回当前偏移量,否则,将提供的字符写入当前位置,然后使用偏移量+ 1再次调用该函数。
该函数将返回输入的长度。

函数体看起来像

// Get character from user

if ( c == '.' ) {
    input[offset] = '\0';
    return offset;
} else {
    input[offset] = c;
    return thisFunction(input, offset+1);
}