為什麼這篇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 行, 印出 1 個 1
共3行 22 ←這是第 2 行, 印出 2 個 2
└ 333 ←這是第 3 行, 印出 3 個 3
主要的動作如下:
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