🔦

【再帰】「%(剰余演算子)」と「/(割り算演算子)」

2024/10/02に公開

「%(剰余演算子)」と「/(割り算演算子)」の違いを理解していなかったせいで、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