質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1667閲覧

progateの問題 最大値を求める

zendaman999

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

1クリップ

投稿2020/05/06 07:35

編集2020/05/06 10:55

よろしくお願いします。

今年2月に他の方も質問していましたが、その方とは別の部分がわからないので質問しています。
下記のここから、ここまでと記載した部分で、なぜこの式で最大値がわかるのかがわかりません。
変数maxに103を入れてbと比べてbが大きかったらなぜbをmaxに入れるのでしょうか。
この時点で72>103で式として成り立ってないですよね。
これはjavascript以前の問題でしょうか。

javascript

1```ここに言語を入力 2const number1 = 103; 3const number2 = 72; 4const number3 = 189; 5 6// getMax関数を定義してください 7const getMax = (a, b, c) => { 8 9-------------------ここから----------------- 10 11let max = a;  12if (b > max) {  13 max = b; 14 } 15 if (c > max) { 16 max = c; 17 } 18------------------ここまで----------------- 19 return max; 20}; 21// 「最大値は○○です」と出力してください 22 23const max = getMax(number1, number2, number3); 24 25console.log(`最大値は${max}です`);
DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zendaman999

2020/05/06 08:55

m.ts10806様 申し訳ありません。コード部分修正しました。
guest

回答1

0

ベストアンサー

ここでは、

js

1const number1 = 103; 2const number2 = 72; 3const number3 = 189;

と決められているので混乱するのかもしれません。これらの値が外部から与えられるという前提で考えてみてください。

つまり、a、b、c はあらかじめ分かっていないものと考えてください。

js

1let max = a;

で最大値 max は a であると仮定して代入しています。

js

1if (b > max) {  2max = b; 3}

で b が max つまり a より大きければ、max に b を入れます。
そうでなければ、max は a と同じ値のままです。

さらに

js

1if (c > max) { 2max = c; 3} 4

で c が max より大きければ、max に c を代入しています。

結果、max に a、b、c の内の最大の値が入ります。

【補足】
なぜ、else がないのかという疑問を持っておられたようなのでちょっと追記してみます。

js

1const getMax = (a, b, c) => { 2 let max = a;  3 if (b > max) {  4 max = b; 5 } else if (c > max) { 6 max = c; 7 } 8 return max; 9};

こう書いてしまうと正しくないことは、分かりますか?

こうすると b < a の時だけ、c > a が比較されるので c > b > a の場合に b が max に選ばれてしまいます。

投稿2020/05/06 07:50

編集2020/05/06 09:16
Yasumichi

総合スコア1773

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zendaman999

2020/05/06 08:16

Yasumichi様 回答ありがとうございます。 どんな数字かわからない数字が3つあって、1つ目の数字をa(max)にしておき、 bと比べて、bがa(max)より大きければ、aと交換してbをmaxに入れて cと比較してcが大きかったら最終的にcが最大値っていうことでしょうか? >そうでなければ、max は a と同じ値のままです。 aとbを比較してaの方がお大きかったら、 (そうでなければ)elseとかで記述せずにそのままの状態で次のcと比較する というのをこの式から読み取らなければならないのは常識なのでしょうか?
Yasumichi

2020/05/06 08:24

難しい質問ですね。長年、プログラムを読んでいる人間からすると普通に読めてしまいますが。 else を使うとルートが複雑化していく場合があるので使う必要がない時は、使わないように書いたりします。 今回の場合、b > max であるかどうかと c > max であるかどうかに直接の因果関係がないのでこう書いていると思います。
zendaman999

2020/05/06 08:45

Yasumichi様 回答ありがとうございます。 そうでない場合にいちいちelseで書かずに、次の式 if (c > max) に移行するという考え方をしりませんでした。 次回からそのように考えて進めていきます。
Yasumichi

2020/05/06 09:09

ここでは、もっと重要な点がありました。 b > max でない時だけ c>max を比較するような書き方にしてしまうと b > a だけど c > b の場合を拾えなくなってしまいます。
zendaman999

2020/05/06 10:35

Yasumichi様 回答ありがとうございます。 追加してもらった式をよく考えてみます。 今の時点でおかしいかどうかわかりません(汗
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問