【Use Recursion to Create a Range of Numbers】フリーコードキャンプを日本語で解説!

フリーコードキャンプ

おいーす、もりたけです。

フリーコードキャンプを日本語で解説!の第109弾です。

JavaScript Algorithms and Data Structures Certification (300 hours)の中の、

Basic JavaScriptの中の、

Use Recursion to Create a Range of Numbers

です。

さっそく見ていきましょう。

まずは本文から。

Continuing from the previous challenge, we provide you another opportunity to create a recursive function to solve a problem.


We have defined a function named rangeOfNumbers with two parameters. The function should return an array of integers which begins with a number represented by the startNum parameter and ends with a number represented by the endNum parameter. The starting number will always be less than or equal to the ending number. Your function must use recursion by calling itself and not use loops of any kind. It should also work for cases where both startNum and endNum are the same.

 

解説していきます。

今回は再帰関数を使って関数を書いてみようというないようです。

 

課題を見てみましょう。

2つのパラメーターを持つrangeOfNumbersという名前の関数を定義しました。 この関数は、startNumパラメーターで表される数値で始まり、endNumパラメーターで表される数値で終わる整数の配列を返す必要があります。 開始番号は常に終了番号以下になります。 関数は、再帰関数を利用し、いかなる種類のループも使用しないでください。 startNumとendNumの両方が同じ場合にも機能する必要があります。という課題です。

 

前回使ったカウントアップする関数を少しいじることでできます。

function countup(n) {
  if (n < 1) {
    return [];
  } else {
    const countArray = countup(n – 1);
    countArray.push(n);
    return countArray;
  }
}
ポイントは2つあります。
(n < 1)という条件をendNum と startNum 使った表現にすること。
再度関数を呼び出すときに、endNumの値だけ1小さくすること。
答えはこうです。
function rangeOfNumbers(startNum, endNum) {
  if(endNum < startNum){
    return [];
  }else{
    const rangeArray = rangeOfNumbers(startNum, endNum – 1);
    rangeArray.push(endNum);
    return rangeArray;
  }
};
ということで今回は再帰関数を使ってみました。
これでJavaScript Algorithms and Data Structures Certification (300 hours)の中の、Basic JavaScriptは終わりです。
基本的な文法はこれくらいみたいですね。
次からはIntroduction to the ES6 Challengesにはいります。
では次回!
タイトルとURLをコピーしました