🔦
【再帰】「%(剰余演算子)」と「/(割り算演算子)」
「%(剰余演算子)」と「/(割り算演算子)」の違いを理解していなかったせいで、error(unfield)ループになったので、改めて基礎を考えます🥲
/(割り算演算子)
例:自然数 n, k が与えられるので、n が k で何回割り切れるか返す関数(count)
function count(n:number, k:number): number{
if((n % k) !== 0 ){
return 0;
}
else {
return 1 + count((n / k),k);
}
}
//出力結果
count(3,2) --> 0
count(10,2) --> 1
count(24,2) --> 3
%(剰余演算子)
例:2 つの整数 m、n の最大公約数を再帰的に計算する再帰関数(Divisors)
function Divisors(m, n) {
if ((m % n) == 0){
return n;
} else {
return Divisors(n, m % n);
}
}
//出力結果
Divisors(48,12) --> 12
Divisors(168,60) --> 12
1. n / k の意味
n / k は、「n を k で割った結果」を表す。
今回の問題では、n が k で割り切れる回数を求めたいので、n を k で割って次に進む必要があるもの。
例えば、n = 28 と k = 2 の場合、28 / 2 = 14 となり、次に 14 / 2 = 7 を実行する形になります。
※n を k で割り続けることで、割り切れる回数を数える。
2. %(剰余演算子)とは?
% は剰余を計算する演算子で、「n を k で割った余り」を返します。割り切れるかどうかを確認するために使います。
例えば、n = 28 と k = 2 の場合、28 % 2 = 0 となり、「割り切れる」ことを確認するのに使う。
※剰余演算子 % は「割り算を続ける」ためには使えません。% はあくまで余りを確認するために使われるもので、割り算を行うためには /(割り算) が必要です。
3.n / k と % の使い分け
/(割り算演算子)
実際に n を k で割って
次のステップに進むために使います。
n / k は「n を k で割った結果」を返します。
%(剰余演算子)
n が k で割り切れるかどうかを確認するために使います。
例えば、n % k == 0 のようにして、割り切れる場合にのみ再帰の次のステップに進むことができます
4.まとめ
- 割り算演算子 /: 2つの数を割った「商」を返す=「割り続ける」ために使います。
- 剰余演算子 %: 2つの数を割ったときの「余り」を返す=「割り切れるかどうかの確認」に使います。
Discussion