2015-05-15 66 views
-1

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

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

没得到它。 int char_count = 2; print_backwards(a,char_count);? – 911

+0

print_backwards函数仅实现字符数组的反转。在主函数中,如果你手动声明了一个字符数组,{'H','i'}和int size = 2,并且print_backwards将这两个参数作为参数,它将显示'iH'。 – Marbille

回答

1

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

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

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

函数体看起来像

// Get character from user 

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