已知递归字符函数具有下面特殊的递归性质,请编写程序求解 RecursionFunction(int n-1, '*'), if n>0 and c = '#' RecursionFunction(int n+2, '?'), if n>0 and c = '*' RecursionFunction(int n, char c)= RecursionFunction(int n+3, '+'), if n>0 and c = '?' RecursionFunction(int n-6, '#'), if n>0 and c = '+' ‘\n’, else situations 在n>0时,输出n个字符;递归函数退出时,输出:"RecursionFunction has been over !" 输入描述: 一行,整型数字n,与字符c,作为递归函数的参数。 输出描述: 两行字符串: 第一行为对应的输出内容,第二行为结束字符。 样例输入: 3 ? 样例输出: ???++++++ RecursionFunction has been over ! 【解释】: 输入为"3 ?"时,表示递归函数为(3, ?),因此需要输出3个'?', 接下来会求解(6,+),因此需要输出6个'+',接下来(0,#) 递归结束,输出要求语句。 数据范围 字符C∈{'?','#','*','+'}, 1≤n≤40 注意:题目提供前置代码,只需要提交需要补全的函数即可。
时间: 2024-02-14 07:11:02 浏览: 9
根据题目提供的函数特性,我们可以编写如下的 C 语言递归函数:
```c
void RecursionFunction(int n, char c) {
if (n > 0) {
if (c == '#') {
printf("#");
RecursionFunction(n - 1, '*');
} else if (c == '*') {
printf("*");
RecursionFunction(n + 2, '?');
} else if (c == '?') {
printf("?");
RecursionFunction(n + 3, '+');
} else if (c == '+') {
printf("+");
RecursionFunction(n - 6, '#');
}
} else {
printf("\nRecursionFunction has been over !");
return;
}
}
```
这个函数中,我们首先判断递归深度 `n` 是否大于 0。如果是,我们根据字符 `c` 的值选择不同的递归函数进行递归。具体来说,如果 `c` 是 `#`,则输出一个 `#`,然后递归调用 `RecursionFunction(n - 1, '*')`;如果 `c` 是 `*`,则输出一个 `*`,然后递归调用 `RecursionFunction(n + 2, '?')`;如果 `c` 是 `?`,则输出一个 `?`,然后递归调用 `RecursionFunction(n + 3, '+')`;如果 `c` 是 `+`,则输出一个 `+`,然后递归调用 `RecursionFunction(n - 6, '#')`。
当递归深度 `n` 小于等于 0 时,递归结束,输出结束语句。注意,函数返回值为 `void`,即没有返回值。