关于对递归的深刻理解
先给一个我在编程时的例子吧,这个程序需求是abcde 若移动一位生成eabcd,俩位deabc,其实它是比较简单的 俩从循环就可以搞定,不过可以用循环就可以用递归,当然也可以用栈,这里没必要用栈,为了深刻理解下递归,我做了些改进。
char *mov_str(char s[], int n)
{
char temp;
int len, i;
if (n >= 1)
{
len = strlen(s);
temp = *(s +len-1);
for (i = len-2; i>=0; i++)
s[i+1] = s[i];
*s = temp;
move_str(s, n-1);
}
else return s;
这里有一个错误,也是对递归没有理解导致的。递归是从递归内层向外层返回值的,所以必须每一层都必须返回值。所以这里return move_str(s, n-1);
如果没有return那么就不会从里层返回结果到外层,就会出错。
}
}
关于对递归的理解
最新推荐文章于 2022-06-12 01:05:41 发布