for文 javascript
投稿日: 2024年12月05日
すごく初歩的な内容ですが、自分の復習になると思って笑
for文について少し疑問に思ったことがあったので書いてみました!😎
構文
for(初期化式; ループ継続条件; 増減式)
for文書いててなぜだろうと思ったことがありました!
function combi(n, r) {
let p = 1;
for(let i = 1; i <= r; i++) {
p = p * (n - i + 1) / i;
}
return p;
}
let n = 10;
let r = 3;
let result = combi(n, r);
console.log(result);
なぜ変数p
で初期値設定しているのに、ループ内で新たに変数i
で定義しないといけないの?
同じ変数pではダメなの?
こんな疑問を持った人、もしかしたらいたと思うですよ!!😳
それにはちゃんと理由があるんです!
以下、同じ変数p
に変えたコードになります!
どんな結果になるかわかりますか?
結果は、1と出力されます!
原因は、同じ変数p
をループ内で再定義すると、最初に定義した変数p
が上書きされてしまうからです。ループ内に同じp
をカウンタとして使っているため、計算が正しく行われなくなります!
function combi(n, r) {
let p = 1;
for(let p = 1; p <= r; p++) {
p = p * (n - p + 1) / p;
}
return p;
}
let n = 10;
let r = 3;
let result = combi(n, r);
console.log(result);
まず、この変数p
は結果を保持するために使われる変数になります。
function combi(n, r) {
let p = 1;
そして、ループ内にある変数i
は、ループを進行管理し、正しい計算が行われるための変数となります。
for(let i = 1; i <= r; i++) {
p = p * (n - i + 1) / i;
}
なので、わざわざこうして役割を分けているのは、それぞれの異なる変数を使うことで
変数の競合を防ぎ、コードを意図を明確にするためです!
ちゃんと役割を理解すると、少しずつコードが読めてきて(理解できる)て嬉しくなりますよね!
僕自身も全然読めていなですが、コツコツやっていきましょう!!