首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

遞迴實作 strlen:無暫存變數、單行回傳

     編輯:關於C

程式碼

size_t my_strlen(const char *s)
{
    return *s ? 1 + my_strlen(s + 1) : 0;
}

運作原理

  • 基底案例:*s == '\0' 回傳 0。
  • 遞迴步驟:目前字元非結束符,長度 = 1 + 子字串長度(s+1)。
  • 編譯器若支援尾端呼叫最佳化(TCO),可轉為迴圈避免堆疊增長;否則最大深度受限於字串長度(通常安全)。

優缺點

標準庫實作參考(迴圈版)

size_t strlen(const char *s)
{
    const char *p = s;
    while (*p) ++p;
    return p - s;
}

生產環境請直接使用 string.h 提供的 strlen,經過高度最佳化(向量化、對齊讀取)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
優點缺點
程式碼極簡潔、可讀性高堆疊溢位風險(超長字串)
無額外變數、無迴圈效能遜於迴圈版(函數呼叫開銷)
展示遞迴思維嵌入式/核心開發通常禁用遞迴