C:遞迴 permutation — 排列組合
學到什麼
- 了解遞迴 (Recursion) 程式的運作。
- 利用遞迴方式實作排列組合 (permutation )。
- 藉由手寫遞迴的過程,來更深刻理解遞迴的機制,以及如何呼叫自身程式。
- 使用 C 語言來完成遞迴式排列組合的副程式,也了解如何將類似問題,用同一種程式重複執行,並設上終止條件來結束程式。
程式碼
list = [a, b, c];
perm(list, 0, n-1);
void perm ()
{
int j, temp;
if (i == n)
{
for (j=0; j<=n; j++)
{
printf("%c", list[j]);
}
printf(" ");
}
else
{
for (j=0; j<=n; j++)
{
swap(list[i], list[j], temp);
perm(list[i], i+1, n);
swap(list[i], list[j], temp);
}
}
}
3 則留言
Duncan
HI 最下面 swap() perm() swap()裡的list是否為list不是list[i]
yang10001
嗯,真的寫的怪怪的XD,我有空再修改一下,謝謝。
6361811
為什麼swap要2次?