首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C語言數組經典問題:漢諾塔遞歸解法與數組初始化陷阱

     編輯:程式設計綜合問答

漢諾塔遞歸核心邏輯

移動 n 個盤子從 A 經 B 到 C:

  1. 移動 n-1 個從 A 經 C 到 B。
  2. 移動第 n 個從 A 到 C。
  3. 移動 n-1 個從 B 經 A 到 C。
void hanoi(int n, char from, char aux, char to) {
    if (n == 1) { printf("%c -> %c\n", from, to); return; }
    hanoi(n-1, from, to, aux);
    printf("%c -> %c\n", from, to);
    hanoi(n-1, aux, from, to);
}

數組初始化常見錯誤

錯誤代碼問題正確寫法
int a[5] = {1,2,3,4,5,6};初始化器超過數組長度長度匹配或省略長度 int a[] = {...}
int a[5]; a = {1,2,3};數組名不可作左值整體賦值逐元素賦值或 `memcpy`/`{}` 初始化
char str[10] = "hello\0world";字符串字面量隱含 `\0`,截斷用字符數組 `{'h','e','l','l','o','\0','w',...}`

靜態/動態分配選擇

  • 編譯期已知大小 → 靜態/棧上數組 `int a[N]`。
  • 運行期確定大小 → `malloc`/`new` + 指針,用完 `free`/`delete[]`。
  • C99 支持變長數組 (VLA) `int a[n]`,但棧溢出風險大,嵌入式慎用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved