供参考:
#include <stdio.h>
#define LSIZE 81
void strDeletd(char str[], int dBegin, int dLen)
{
if (str[dBegin + dLen] != '\0') {
str[dBegin] = str[dBegin + dLen];
strDeletd(str, dBegin + 1, dLen);
}
else
str[dBegin] = '\0';
}
int main()
{
char str[LSIZE];
int dBegin, dLen;
scanf("%s", str);
scanf("%d%d", &dBegin, &dLen);
strDeletd(str, dBegin, dLen);
printf("%s\n", str);
return 0;
}
那就Dlen--然后递归循环,一次减一个字符,Dbegin不变,直到Dlen==0,return 输入
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出