【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序打印字符串 | 递归要素 | 递归停止条件 | 递归操作 )
生活随笔
收集整理的這篇文章主要介紹了
【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序打印字符串 | 递归要素 | 递归停止条件 | 递归操作 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、借助 遞歸函數操作 逆序打印字符串
- 二、完整代碼示例
一、借助 遞歸函數操作 逆序打印字符串
遞歸需要掌握下面 222 個點 :
-
參數入棧模型 :
- 第 111 次 , “sdh” 字符串入棧 ;
- 第 222 次 , “dh” 字符串入棧 ;
- 第 333 次 , “h” 字符串入棧 ;
- 第 444 次 , “\0” 字符串入棧 ;
-
函數調用模型 :
遞歸函數 需要有 遞歸停止條件 和 遞歸操作 222 個要素 ;
遞歸停止條件 : 遍歷字符串直到遍歷到字符串結尾處 ;
// 遞歸停止條件if(*str == '\0'){return;}遞歸操作 : 每次遞歸 , 字符串中的指針向后移動一位 , 直到字符串移動到最后一位 \0 位置 ;
// 遞歸操作// 該遞歸操作會逐步 將 字符串 從開始位置 入棧// 直到遞歸到 '\0' 位置時 , 才開始出棧// 此處是遞歸點// 遞歸操作執行到這里 , 開始一直遞歸// 遞歸結束后 , 依次執行下面的代碼str_inverse(str + 1);二、完整代碼示例
完整代碼示例 :
#include <stdio.h> #include <stdlib.h> #include <string.h>/** 通過遞歸方式 , 逆向遍歷字符串* 將 遞歸遍歷 結果存入 全局變量中* 遞歸指針 作 函數參數*/ void str_inverse(char *str) {// 驗證函數形參指針合法性if(str == NULL){return;}// 遞歸停止條件if(*str == '\0'){return;}// 遞歸操作// 該遞歸操作會逐步 將 字符串 從開始位置 入棧// 直到遞歸到 '\0' 位置時 , 才開始出棧// 此處是遞歸點// 遞歸操作執行到這里 , 開始一直遞歸// 遞歸結束后 , 依次執行下面的代碼str_inverse(str + 1);// 打印出棧的字符// 注意 : 該打印操作是 遞歸停止條件達成后// 逐個出棧打印printf("*str = %c\n", *str); }int main() {// 存在如下字符串, 求下面字符串 "abc" 出現次數char *str = "sdh";// 字符串翻轉str_inverse(str);// 命令行不要退出system("pause");return 0; }執行結果 :
*str = h *str = d *str = s 請按任意鍵繼續. . .總結
以上是生活随笔為你收集整理的【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序打印字符串 | 递归要素 | 递归停止条件 | 递归操作 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C 语言】字符串模型 ( 字符串翻转模
- 下一篇: 【C 语言】字符串模型 ( 字符串翻转模