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

C語言遞歸演算法深度解析:漢諾塔移動步驟生成與變量作用域、存儲類型全景圖

     編輯:C 語言基礎

漢諾塔遞歸邏輯圖解

move(n, x, y, z) 將 n 盤從 x 經 y 移至 z。
n=1:直接 x→z。
n>1:
1. move(n-1, x, z, y) // x→y 借 z
2. printf(x→z) // 底盤直達
3. move(n-1, y, x, z) // y→z 借 x

每次遞歸 n 遞減 1,最終歸 1 終止。n=4 產生 15 步輸出,完整列於原文。

變量作用域:局部 vs 全局

  • 局部變量:函數內定義(含形參),僅在該函數/復合語句內有效。不同函數可同名不衝突。
    例:main() { int k=5; { int k=8; } printf("%d",k); } 輸出 5。
  • 全局變量:函數外定義,屬整個源檔。需在使用前用 extern 聲明(定義在前者可免聲明)。
    作用:跨函數共享數據、突破單一返回值限制。
    缺點:降低模組獨立性,慎用。

存儲類型與生存期

靜態存儲(全局、static)程序啟動分配、結束釋放,生存期=程序運行期。
動態存儲(auto、register)調用時分配、返回時釋放,生存期=調用期。
四大存儲類別:
auto(預設局部)、register(建議寄存器)、extern(外部)、static(靜態)。
完整聲明:存儲類別 數據類型 變量名; 如 static int a[5]={1,2,3,4,5};。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved