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

為什麼這篇for迴圈題目鄉民發文收入到精華區:因為在for迴圈題目這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者loveme00835 (最愛朴素妍)看板C_and_CPP標題Re: [問題] 一題迴圈的練習...

for迴圈題目 在 歪歪 Instagram 的精選貼文

2021-08-02 19:04:29

/「大一必修」 這都是我們學校的大一必修,每個學校的課程內容、難度都不一定,所以大家參考就好🥸,準確的資訊還是建議上dcard校版詢問,或者是等友直屬學長姊後再詢問他們哦!如果有興趣也可以用課程後面的英文去搜尋,應該是可以找到不少的資源以及原文課本,可以稍微先預習看看(我本人是沒有預習啦,暑假還...


※ 引述《chessjim (jim)》之銘言:
: ( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
: ( 未必需要依照此格式,文章條理清楚即可 )
: 遇到的問題: (題意請描述清楚)
: 我寫到一題迴圈的題目
: 如下
: 1
: 22
: 333
: 我已經寫出來了
: 卻不知道要怎麼從"無"到"有"一步一步分析它
: 希望得到的正確結果:
: 希望有人可以教我如何從無到有寫出正確答案

仔細觀察他的規律 :

┌ 1 ←這是第 1 行, 印出 11
3行 22 ←這是第 2 行, 印出 22
└ 333 ←這是第 3 行, 印出 33

主要的動作如下:
1.從上到下重複印數行
2.每一行從左到右重複印數個數字

當有重複這個字眼出現, 表示可能需要迴圈來簡化程式碼,
而第 2點動作是第 1點動作的子動作, 所以他們是巢狀迴
(大動作包小動作) .

首先先產生大動作的迴圈, 大概長成這樣 :

int lineCount = 3; // 總共要印的行數
int currentLine; // 目前印的行數
for( currentLine = 1; currentLine <= lineCount; ++currentLine )
{
// 在這邊加上需要做的子動作程式碼
putchar('\n'); // 記得換行
}

小動作的迴圈可能長這樣 :

int count; // 目前已經印出的數字個數
for( count = 1; count <= 目前的行數; ++count )
{  ̄ ̄ ̄ ̄ ̄
printf("%d", 目前的行數 );
}  ̄ ̄ ̄ ̄ ̄

還記得剛剛講的巢狀迴圈嗎? 是時候把他們組合在一起了

int lineCount = 3; // 總共要印的行數
int currentLine; // 目前印的行數
for( currentLine = 1; currentLine <= lineCount; ++currentLine )
{
// 在這邊加上需要做的子動作程式碼
int count; // 目前已經印出的數字個數
for( count = 1; count <= currentLine; ++count )
{
printf("%d", currentLine );
}

putchar('\n'); // 記得換行
}

然後就完工了, 這跟上面那篇有什麼不一樣? 因為還有另外
一種使用遞迴的思考方式, 不過主要也是大動作包小動作,
以印出 2行的情況來說 :

1.共有 2 行要印, 這是第 1 行
└共有 1 個 1 要印, 這是第 1 個
└共有 1 個 1 要印, 這是第 2 個 ←不用印

2.共有 2 行要印, 這是第 2 行
└共有 2 個 2 要印, 這是第 1 個
└共有 2 個 2 要印, 這是第 2 個
└共有 2 個 2 要印, 這是第 3 個 ←不用印

3.共有 2 行要印, 這是第 3 行 ←不用印

「共有 n 行要印」這句話可以寫成函式 :

void linesToPrint( int n ) // 共 n 行要印
{
if( n == 0 ) return; // n 為 0, 不用印

linesToPrint( n - 1 ); // 先印出前面 n - 1 行

// 在這邊加上印出數字的程式碼

putchar('\n');// 此行換行
}

「共有 n 個 d 要印」可以寫成函式 :

void digitsToPrint( int n, int d ) // 共有 n 個 d 要印
{
if( n == 0 ) return; // n 為 0, 不用印

digitsToPrint( n - 1, d );// 此行前面先印 n - 1 個 d

printf( "%d", d ); // 印出第 n 個 d
}

需要注意的是呼叫順序是由樹狀圖最底下往上層呼叫, 不過
完成順序則是由上而下, 有興趣的話就試試把它們組起來執
行吧! 其實有時候換成遞迴的方式思考也可以加深你對題目
的了解度, 謝謝觀賞.

--
◢████ ◢█ ◢██◣ ◢█ ◢███ ◢█ T-ara版怎麼去
████◢█████s ~> T-ara
███ █ ◢█歡迎您的光臨
███████████恩靜智妍孝敏
███ ██ 素妍居麗寶藍
████◥██◤ █████ψmakigoto123

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.115
hilorrk:love大又進化了... 10/04 04:22
※ 編輯: loveme00835 來自: 140.121.197.115 (10/04 04:23)
loveme00835:= =來去睡覺... 10/04 04:23
james732:這樣的文還真的是佛到不行了...XDD 10/04 04:30
tkhunter:love大 必推 10/04 06:45
chessjim:受我一拜Orz!!感謝 10/04 06:52
silveriii:挖靠還上色..... 好人 10/04 09:42
nowar100:本版好人 不推不行 XD 10/04 11:17
xatier:推love大! 超佛心的 10/04 12:37

你可能也想看看

搜尋相關網站