Re: [問題] 請問大家都怎麼教別人遞迴和迴圈的基本 …
※ 引述《leeyinf (貓貓)》之銘言:
: 我有認識的朋友大學是非資訊(財金)相關科系畢業,
: 最近對寫程式有興趣,
: 可是她一直卡在遞迴和迴圈,這個部分...
: 我教了可是她還是不太理解,
: 不知道大家在教別人這部分的時候
: 不知道是如何下手的?
: 至於書籍,我是推薦她去看螞蟻書C++
: 或者是有哪一本書在這邊寫得最淺顯易懂(中英文皆可)
: 我不知道這個問題po在這邊可不可以...
: 不適合的話,請大家推薦我適合的版
: 謝謝大家:)
迴圈,用最淺白的方法解釋,是先列出沒有迴圈的情況:例如,
cout << 2 << " x " << 1 << " = " << (2*1) << endl;
cout << 2 << " x " << 2 << " = " << (2*2) << endl;
cout << 2 << " x " << 3 << " = " << (2*3) << endl;
...
cout << 2 << " x " << 9 << " = " << (2*9) << endl;
cout << 3 << " x " << 1 << " = " << (3*1) << endl;
...
然後就可以說,像 2 * X = ... 這個段落,第二個數字是從1列到9,
第三個數字也有一半是1列到9. 在C++可以收成下列段落:
for (i=1; i<=9; i++)
cout << 2 << " x " << i << " = " << (2*i) << endl;
cout << 3 << " x " << 1 << " = " << (3*1) << endl;
...
而且因為她是新手,你要特別強調 for 區塊的頭,尾,漸進變量等三個語法,
是概念上對應到1~9這一列數字.
其他3,4,5等等開頭的乘法式子也可以分別收起來,而且可以重複使用同一個 i:
for (i=1; i<=9; i++)
cout << 2 << " x " << i << " = " << (2*i) << endl;
for (i=1; i<=9; i++)
cout << 3 << " x " << i << " = " << (3*i) << endl;
for (i=1; i<=9; i++)
cout << 4 << " x " << i << " = " << (4*i) << endl;
...
for (i=1; i<=9; i++)
cout << 9 << " x " << i << " = " << (9*i) << endl;
然後,可以看到這些迴圈幾乎相同,只有第一個數字和第三個數字的一半,是2列到9.
這樣也改寫成迴圈:
for (j=2; j<=9; j++) {
for (i=1; i<=9; i++)
cout << j << " x " << i << " = " << (j*i) << endl;
}
用一個實例先平鋪直敘,然後示範化簡再化簡的過程,就可以提供基礎讓她理解
或記得住迴圈區塊的語法語意.
然後,可能拿 cout << "今天星期一,猴子穿新衣" ... 當作第二個例子,
就可以同時教迴圈及陣列的使用了.
--
/yau
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.228.18
→
06/24 20:48, , 1F
06/24 20:48, 1F
討論串 (同標題文章)
完整討論串 (本文為第 5 之 5 篇):