作成TIL 2021 11/9


再帰関数とは?


小さな問題を解決することで、与えられた問題を解決します!
  • 回帰:思考方式、問題を最小の問題に分解し、それによって問題を解決する方式を簡略化する
  • 再帰関数=>再帰関数=>自分の関数
  • を繰り返し呼び出す.

    「数値」(num)を受け入れ、1からnumまでの和を返さなければなりません.
    function sumTo(num) { 
      if (num === 0){
        return 0
      }else{
        return num+sumTo(num-1)
      }
      // TODO: 여기에 코드를 작성합니다.
      // 별도의 최적화 기법(memoization)은 금지됩니다.
    }
    1. 재귀함수의 입력값과 출력값을 정의하기
    // 코딩문제를 풀기 전에는 늘 입력값과 출력값이 무엇인지 먼저 확인하고 시작
    // 큰 그림 그리기의 시작
    // sumTo: num =>num
    
    2. 문제를 쪼개고 경우의 수를 나누기
    // " 하나의 문제 풀이 방식으로 모든 문제를 해결할수 있나요?"
    // " 문제 해결 구조는 동일하지만 더 작은 경우를 먼저 해결함으로써 그문제를 해결하는 방법"
    
    
    // " 1부터 5까지의 합을 구하려면, 먼저 1부터 4까지의 합을 구해야 한다."
    // 1+ 2+ 3+ 4+ 5 === sumTo(5)
    // sumTo(4) + 5 === sumTo(5)
    // sumTo(n-1) + n === sumTo(n)
    
    3. 단순한 문제 해결하기
    // sumTo(1) === 1 -> base case
    
    4. 복잡한 문제 해결하기
    // sumTo(n-1) + n === sumTo(n) -> recursive case(재귀)
    
    5. 코드 구현하기
  • デバッガ確認
  • debugger;
    sumTo(5);
  • 再帰関数の式化