本节课任务:
在一群敌人中,找出那个“最特别”的!
(最强的 💪 或 最弱的 🤏)
一排排好队的东西(敌人、硬币)。
一个数字变量,像手指一样,从 0 指到最后一个。
“从头到尾,一个一个看过去。”
int enemyIndex = 0; while (enemyIndex < enemies.size()) { auto enemy = enemies[enemyIndex]; // 👉 这里对 enemy 做事情 enemyIndex += 1; }
auto findStrongestEnemy(auto enemies) { auto strongest = null; auto maxHealth = 0; // 🐣 初始值设为很小 int index = 0; while (index < enemies.size()) { auto enemy = enemies[index]; // 💪 谁更强?比一比! if (enemy.health > maxHealth) { strongest = enemy; maxHealth = enemy.health; } index += 1; } return strongest; }
关键点:
> 大于号:找更大的。maxHealth = 0:初始门槛很低,谁都能上来。auto weakest = null; auto minHealth = 99999; // 🏔️ 初始值设为很大 int index = 0; while (index < enemies.size()) { auto enemy = enemies[index]; // 🤏 谁更弱?比一比! if (enemy.health < minHealth) { weakest = enemy; minHealth = enemy.health; } index += 1; } if (weakest) { hero.attack(weakest); }
关键点:
< 小于号:找更小的。minHealth = 99999:门槛很高,很容易被“更小”的取代。结构都是一样的,只有两个地方不同!
初始值:
很小 (0)
比较符号:
>
if val > best:
初始值:
很大 (99999)
比较符号:
<
if val < best: