1.限制条件分析既然是递归解决问题那么就避不开地要讨论递归的2个必要条件1.存在限制条件满足条件时不再继续递归。2.每次递归都会逐渐向限制条件靠近。简单地回顾下必要条件接下来要找到递归 “递下去” 和 “归回来” 这两个条件。那么字符串逆序怎么把它拆解成与原问题形似的较小规模的问题呢分析逆序整个字符串可以理解为交换2个最末端的元素 revsere(剩下的字符)。2.画图分析这里我用 a b c e d f 来当例子。大致画图分析具体实现画图分析依次类推直到原来的字符串为倒序为止。相信有了这2次具体步骤的画图大家应该也明白了。“递下去”的条件当剩余字符串有 2个 或 2个以上 时说明还有可以交换的元素把 arr 1 递出去。即 strlen ( arr ) 2。“归回来”的条件没有可以逆置地字符时即只有一个字符或没有字符时。即 strlen ( arr )1火strlen ( arr )0。3.具体代码实现以及代码版递归画图流程图void reverse_string(char* str) { char tmp (*str); int len strlen(str); *str *(str len - 1); //strlen-1是字符串最后一个字符的地址 *(str len - 1) \0; if (strlen(str 1) 2) { reverse_string(str 1); } *(str len - 1) tmp; } int main() { char arr[] abcdef; reverse_string(arr); printf(%s, arr); return 0; }