[爆卦]巢狀for迴圈是什麼?優點缺點精華區懶人包

為什麼這篇巢狀for迴圈鄉民發文收入到精華區:因為在巢狀for迴圈這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Zcode (Zcode)看板C_and_CPP標題[問題] 請問如何寫要巢狀迴圈要跑幾層時間T...



問題(Question):

哈囉大家,不好意思打擾

小弟目前有遇到一個問題

就是我想要寫一段code,可以設定多層巢狀迴圈要跑幾層

例如以下程式碼,是跑了2層巢狀迴圈的code

for (int i=1; i<=3 ;i++)
for (int j=1; j<=i ;j++)
cout << "[" << i << "," << j << "] ";

以下是跑了3層的code

for (int i=1; i<=3 ;i++)
for (int j=1; j<=i ;j++)
for (int k=1; k<=j ;k++)
cout << "[" << i << "," << j << "," << k << "] ";


我現在想要寫個general的函數,例如void general(int N)

可以根據引數N決定要跑幾層巢狀迴圈

我嘗試了兩、三天,試著用遞迴函數呼叫的方式去寫

不過都沒有成功

所以想請問大家,像這樣的問題,有沒有甚麼比較建議的寫法?

不用幫我寫只希望大家能給我一點寫法的建議就好,我再自己努力

(我所學非資訊相關背景,所以問的問題也許對大家來說太基本,還請見諒!)

萬分感謝!^^



--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.113.225
※ 編輯: Zcode 來自: 140.109.113.225 (05/23 19:49)
rebaudiana:的確是遞迴阿 05/23 19:50
BlazarArc:可以貼沒有成功的code 看看問題在哪 05/23 20:27

我的code

void general(int N, int k)
{

for (int i=1; i<=N; i++)
{
if (k>=0)
{
general(i,k-1);
}
cout << i << "," ;
}

}

k引數代表的是我希望加多幾層巢狀迴圈

general(3,2)的效果

目標要是

for (int i=1; i<=3 ;i++)
for (int j=1; j<=i ;j++)
for (int k=1; k<=j ;k++)
cout << "[" << i << "," << j << "," << k << "] ";

的效果

也就是產生

[1,1,1] [2,1,1] [2,2,1] [2,2,2] [3,1,1] [3,2,1] [3,2,2] [3,3,1] [3,3,2] [3,3,3]

不過我的general函數還是沒弄好

正在仔細思考中 @@"


※ 編輯: Zcode 來自: 114.45.238.234 (05/23 22:18)
rebaudiana:到遞迴函數的底端再一次印三個數 05/23 23:27
asilzheng:遞迴 傳三個參數 上限, 深度, 是否為第一層 05/24 00:30
asilzheng:我錯了 那樣是寫不出來的 05/24 01:06
BlazarArc:上限、深度、要印的數字 05/24 09:34

弄了一整天,終於差不多完成了 @_@" 有種感動的感覺
但是還剩下最後一點,要把temp[3]改寫成temp[k+1]動態記憶體配置
但是我如果改成以下動態記憶體配置
int* temp;
temp = new int[k+1];
因為是遞迴呼叫的關係
每次遞迴一次都會重新指向一塊新的動態記憶體區塊,這樣就不對了
請問我要怎麼寫,才能產生「靜態的」動態記憶體區塊的效果呢? 萬分感謝!^^

void general(int N, int k)
{

const static int uplimit = k;
// int* temp;
// temp = new int[k+1];
static int temp[3];
^
最後一步,想要改寫成「靜態的」動態記憶體配置int[k+1]

for (int i=1; i<=N ;i++)
{
int round = (uplimit - k + 1);
temp[round-1] = i;

if (round==3)
{
cout << "[";
for (int i=0; i<3; i++)
cout << temp[i] << ",";
cout << "]";
}

if (k>=0)
{
general(i, k-1);
}

}
}

※ 編輯: Zcode 來自: 140.109.113.225 (05/24 17:40)
elba:用const static的話,要跑其它輸入就動不了了 05/24 21:58
elba:以原始程式為基礎改的 http://ideone.com/KkxbQq 05/24 22:02
Zcode:謝謝樓上! 這樣這問題大致算是完成了 萬分感謝! 05/25 17:34

你可能也想看看

搜尋相關網站